gpt4 book ai didi

javascript - 共享 promise (在 Redux 状态下。)

转载 作者:数据小太阳 更新时间:2023-10-29 04:52:15 24 4
gpt4 key购买 nike

我有一个函数依赖于从异步操作(API 获取)解析的 Promise。

异步操作需要返回 Fetch promise ,或者返回一个在 Fetch 完成时解析的 promise 。

但是,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;
}

最佳答案

这是一个简单的方法,用于缓存一个 promise ,或者基本上是一个函数产生的任何计算,所以当函数再次被调用时(在第一次之后)它会返回最后一个计算值,在下面的例子中总是**相同* promise (已解决待定)。

根据您的特定需求,您可以将 Promise 替换为 fetch 并将其存储在 cache 变量中。

function myfunction(){
doAsyncTask().then(RES => {
console.log(RES);
});
}

const doAsyncTask = (cache => {
return function(){
// when called first time, put the promise in the "cache" variable
if( !cache ){
cache = new Promise(function(resolve, reject){
setTimeout(() => {
resolve('foo');
}, 2000);
});
}
return cache;
}
})();

myfunction();
myfunction(); // second call uses the exact same promise

关于javascript - 共享 promise (在 Redux 状态下。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39146698/

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