我有一个依赖于从异步操作(API提取)解析的Promise的函数 .
异步操作需要返回Fetch promise,或者返回在Fetch完成时解析的promise .
但是,Fetch应该只发生一次 .
我可以将fetch promise存储在一个全局变量中,然后返回它,但这是Redux中的反模式吗? Promise应该在Redux商店中,因为它是应用程序状态的一部分吗?
示例代码:
//Should this be in Redux Store?
var promise = null;
myfunction() {
doAsyncTask().then(() => {
//Continue
});
}
doAsyncTask() {
if(promise === null) {
promise = fetch('URI');
}
return promise;
}
1 回答
这是一个缓存promise的简单方法,或者基本上是函数产生的任何计算,所以当再次调用该函数时(第一次之后),它将返回最后一个计算值,在下面的情况下总是**相同*承诺(已解决或待决) .
根据您的特定需求,您可以使用fetch替换Promise并将其存储在
cache
变量中 .