gpt4 book ai didi

javascript - "Promisifying"缓存响应

转载 作者:行者123 更新时间:2023-11-30 10:13:02 26 4
gpt4 key购买 nike

我有一个返回 promise 的异步函数。在函数第一次完成时,我正在缓存响应。在后续调用中,如果缓存响应可用,我希望使用它。我如何构建实现此行为的 promise ?

这样的东西行得通吗?

if(this.cachedResult) {
return $q(function(resolve, reject) {
resolve(this.cachedResult);
}).then(success.bind(this));
}

return this.myService.getSomethingAsync()
.then(success.bind(this))
.fail(fail);

最佳答案

好吧,这会有点用。

这很容易:

if(this.cachedResult) {
return $q.when(this.cachedResult)
}
var that = this
return getFromService().then(function(res){
that.cachedResult = res
return res;
})

代替构造函数位。尽管这打开了竞争条件的大门(如果在您等待第一个结果时发出 5 次请求怎么办?将发出 5 次请求。

所以最好缓存 promise :

var cache = null
function myFunction(){
return cache || (cache = getFromService())
}

它更短、更优雅且不易出现竞争条件。

关于javascript - "Promisifying"缓存响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25443041/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com