for 循环支持 await,数组方法循环不支持 await

137 阅读1分钟
function pro(v) {
  return new Promise(r => {
    setTimeout(() => {
      r(v)
    }, 1000)
  })
}

for 循环支持 await

for (let i = 0; i < 3; i++) {
  const r = await pro(i)
  console.log(new Date().toTimeString(), r)
}

// 14:24:16 GMT+0800 (中国标准时间) 0
// 14:24:17 GMT+0800 (中国标准时间) 1
// 14:24:18 GMT+0800 (中国标准时间) 2
for (let i of [0, 1, 2]) {
  const r = await pro(i)
  console.log(new Date().toTimeString(), r)
}

// 14:24:21 GMT+0800 (中国标准时间) 0
// 14:24:22 GMT+0800 (中国标准时间) 1
// 14:24:23 GMT+0800 (中国标准时间) 2

数组方法循环不支持 await

[0, 1, 2].forEach(async i => {
  const r = await pro(i)
  console.log(new Date().toTimeString(), r)
})

// 14:24:28 GMT+0800 (中国标准时间) 0
// 14:24:28 GMT+0800 (中国标准时间) 1
// 14:24:28 GMT+0800 (中国标准时间) 2