小编imh*_*rn1的帖子

“for wait of”的控制流程是怎样的?

(英语不是我的母语,所以如果您发现任何英语,请提前原谅我的英语)

此时,我对 Promises 和 Async wait 函数非常满意,我也知道如何使用 Promise.all (它只是等待内部的所有承诺首先解析,然后从所有承诺中提取值,然后返回一个数组将 .then 函数与这些值一起使用。)

现在我想知道 for wait 在幕后是如何工作的。

我刚刚写了这段代码:

async function f() {

  let p1 = new Promise(function (r) {
    setTimeout(r, 3000, 1)
  })

  let p2 = new Promise(function (r) {
    setTimeout(r, 2000, 2)
  })

  let p3 = new Promise(function (r) {
    setTimeout(r, 1000, 3)
  })

  let arrayOfPromises = [p1, p2, p3];

  for await (let p of arrayOfPromises) {
    let data = await p;
    console.log(data)
  }
}

f();
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,当它命中第一次迭代时会发生什么,它将命中await关键字,并且await立即返回一个待处理的承诺,那么下面的代码在技术上是否在每次迭代中评估为待处理的承诺?

  {
    let data …
Run Code Online (Sandbox Code Playgroud)

javascript asynchronous for-loop promise async-await

6
推荐指数
1
解决办法
2875
查看次数