Javascript 在初始化之前阻止调用的良好实践?
我经常创建承诺来阻止对类实例的一些调用,直到一些异步初始化完成(参见示例代码) 我还注意到,运行基准测试时,promise的Javascript 在初始化之前阻止调用的良好实践?,javascript,asynchronous,promise,Javascript,Asynchronous,Promise,我经常创建承诺来阻止对类实例的一些调用,直到一些异步初始化完成(参见示例代码) 我还注意到,运行基准测试时,promise的.then()调用相当昂贵,即使它已经解决了。当封装在已解析的.then()中时,每秒运行约50000000次调用的测试函数减少到每秒约320000次调用 有没有更好的方法像承诺一样阻止通话 简单示例: 你会每秒叫它几百万次吗?如果是这样,您可以在可能的情况下通过同步执行操作(在解析时设置布尔属性)来避免开销。否则,async getSomething()。。。你需要打电话
.then()
调用相当昂贵,即使它已经解决了。当封装在已解析的.then()
中时,每秒运行约50000000次调用的测试函数减少到每秒约320000次调用
有没有更好的方法像承诺一样阻止通话
简单示例:
你会每秒叫它几百万次吗?如果是这样,您可以在可能的情况下通过同步执行操作(在解析时设置布尔属性)来避免开销。否则,
async getSomething()。。。你需要打电话吗?那么每秒5000万次?甚至每秒32万次?then引入了几毫秒的延迟-这会影响你的网站吗?不要使用“谢谢所有人”!我预计它在一秒钟内最多运行几千次。由于我们的应用程序速度如此之慢,我只是希望在进行任何大型重写之前进行简单的优化。
class SomeClass {
constructor() {
this.init_promise = new Promise(resolve => {
return fetch("some json")
.then(res => {
// Do things with data.
return resolve();
});
});
}
getSomething() {
return this.init_promise
.then(() => {
// Return something
});
}
}