我不知道如何将 while 循环中的异步等待功能转换为基于 promise 的实现。
repl 显示异步等待版本
https://repl.it/repls/IdealisticPepperyCoding
var dependency = false;
function checkDependency() {
return new Promise(resolve => {
setTimeout(() => {
dependency = true;
return resolve();
}, 1000)
});
}
async function isReady() {
while(!dependency) {
console.log('not loaded');
await checkDependency();
}
console.log('loaded')
}
isReady();
最佳答案
如果我对你的理解正确,你想使用 Promises without 异步函数而不是 Promises with 异步函数,以及示例 checkDependency
实际上可能不会在所有情况下都设置 dependency = true
,所以你想“循环”。
等效的功能可能看起来像这样,您可以在其中“递归”调用检查函数。但是,它实际上不会递归并导致堆栈溢出,因为调用是在异步回调中完成的:
var dependency = false;
function checkDependency() {
return new Promise(resolve => {
setTimeout(() => {
dependency = true;
return resolve();
}, 1000)
});
}
function isReady() {
if (!dependency) {
return checkDependency().then(isReady);
}
return Promise.resolve(true);
}
isReady().then(() => {
console.log('loaded')
});
关于javascript - 将 while 循环中的异步等待转换为 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49118848/