小编sto*_*neb的帖子

使用 Async/Await 与 Promise.all 与 for 循环

以下是我目前对事情的理解:

for 循环中的 async/await 应暂停执行,直到 Promise 解析为止,这意味着在该行完成之前不会发生循环的下一次迭代。

考虑以下数组:

const data = [];
for (let i = 0; i <= 100000; i++) {
    data.push(i);
}
Run Code Online (Sandbox Code Playgroud)

方法 1:在 for 循环中等待 Promise

async function method1() {
  const startTime = new Date();
  console.log('start:', startTime);

  for (const item in data) {
    await new Promise(resolve => {
      if (item % 3 === 0) {
        resolve({});
      } else {
        resolve(item)
      }
    });
  }

  const endTime = new Date();
  console.log('finish:', endTime);
  console.log('total time:', endTime-startTime);
}
Run Code Online (Sandbox Code Playgroud)

因为它需要顺序执行 Promise 才能继续循环,所以我认为使用 …

javascript asynchronous node.js promise async-await

5
推荐指数
1
解决办法
6081
查看次数

标签 统计

async-await ×1

asynchronous ×1

javascript ×1

node.js ×1

promise ×1