gpt4 book ai didi

javascript - 如何等待 JavaScript 中存在特定值?

转载 作者:行者123 更新时间:2023-12-02 21:31:48 25 4
gpt4 key购买 nike

所以我一直在尝试用谷歌搜索我的答案,但没有找到它。我想知道如何等待使用 Promise 定义的值,而不是像使用这样的暴力方法:

while(true){ Check for condition and then break }

这是我最初的暴力方法,但它显然不是一个好的解决方案:

const awaitToken = new Promise((resolve, reject) => {
while(true){
if(getState().auth.token){
resolve(true)
break;
}
}
})

<小时/>**编辑: getState 方法不是异步的,否则会更容易,为什么我要实现它是因为从用户登录到 token 在 redux 状态下可用时有一个小的延迟**<小时/>我正在开发一个react-redux项目,我想在其中实现这个,但是,我的代码无关紧要,因为我不需要特定于案例的答案。如果有任何帮助,我将不胜感激!

最佳答案

这是一个非阻塞解决方案,可以在 Promise 中以简单的方式使用同步函数。额外的超时可以为您节省大量等待时间。

let arrivedToken = new Promise((resolve, reject) => {
/* how often you wanna check? */
let interval = 20;
/*how long do you want to wait? */
let timeOut = 4000;
let timer = setInterval(() => {
timeOut -= interval;
if (timeOut < 1) {
clearInterval(timer);
reject(new Error('catching token timed out'));
}
let token = getState().auth.token;
if (token)
resolve(token);
}, interval);
};

这样你就可以处理成功甚至失败:

arrivedToken
.then(token => {
/* whatever you want */
})
.catch(error => {
/* handle the timeout */
})
;

关于javascript - 如何等待 JavaScript 中存在特定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60605489/

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