【发布时间】:2023-04-05 01:00:01
【问题描述】:
我需要有一个“无尽的”while 循环,其中包含承诺。下面是一些示例代码:
let noErrorsOccured = true
while (noErrorsOccured){
someAsyncFunction().then(() => {
doSomething();
}).catch((error) => {
console.log("Error: " + error);
noErrorsOccured = false;
});
}
function someAsyncFunction() {
return new Promise ((resolve, reject) => {
setTimeout(() => {
const exampleBool = doSomeCheckup();
if (exampleBool){
resolve();
} else {
reject("Checkup failed");
}
}, 3000);
});
}
所以这个while循环应该无限运行,除非发生错误,然后while循环应该停止。我怎样才能做到这一点?
希望您能理解我的意思,并提前致谢。
【问题讨论】:
-
Promise 反应(调用已完成或拒绝处理程序)在导致它们被执行的线程完成后异步执行。第一个while循环是一个无限的阻塞循环,创建了无限数量的promise,因为超时回调永远不会发生:D 可能你想要一个超时或间隔计时器在为异步检查创建的承诺在运行另一次检查之前完成后等待 3 秒?
-
问题是我真的不知道我的承诺需要多长时间才能解决,我只使用
setTimeout()来澄清我的例子。但是 Felix Kling 的解决方案效果很好,所以不需要其他解决方案,但无论如何谢谢 :)
标签: javascript while-loop es6-promise