我正在尝试将使用 promise(和轮询)的函数转换为异步函数,但我不太确定它是如何工作的。
我有这个:
function myFunction() {
return new Promise(resolve => {
// stuff here ...
var poll = setInterval(function() {
if (condition) {
clearInterval(poll);
resolve("done");
}
}, 100);
});
}
.. 但我不确定要在这里等待
什么:
async function myFunction() {
// stuff here ...
var poll = setInterval(function() {
if (condition) {
clearInterval(poll);
// await what?
}
}, 100);
}
最佳答案
setInterval
不适合异步等待。最好使用您在循环的每次迭代中再次调用的 setTimeout 的“promisified”版本。
const myFunction = async = () => {
let condition = false;
while (!condition) {
await new Promise(resolve => setTimeout(resolve, 100));
condition = processCondition();
}
}
关于javascript - 轮询时 promise 异步等待,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57213034/