0

我很难理解 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()

4

0 回答 0