我很难理解 javascript 异步函数是如何工作的。在我的实际用例中,有问题的函数是第 3 部分 API 调用,但简单的 setTimeout 函数是重现我的问题的更简单方法。
我希望代码无限循环,直到设置时间函数完成,然后退出循环并继续程序。在此示例中,我希望/期望输出为“设置超时:5”,然后是“设置超时:5”,但它无限循环,表明 setTimeout 函数甚至从未运行。
我也尝试过不使用循环并在await
之前放置,setTimeout(function()
但它会打印“超出设置超时:1”,然后是“设置超时:5”。
TLDR:我希望我的代码以同步方式使用异步函数。
async function doWork() {
var a = 1
setTimeout(function() {
a = 5
console.log(`in set timeout: ` + a)
}, 1000)
i = 0
while (a == 1) {}
console.log(`\nout of set timeout: ` + a)
}
doWork()