gpt4 book ai didi

javascript - 将 while 循环中的异步等待转换为 promise

转载 作者:行者123 更新时间:2023-11-30 09:25:53 25 4
gpt4 key购买 nike

我不知道如何将 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/

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