下面是如何使用 for..of 循環來迭代一個數組並在循環內部使用 await:

const fun = (prop) => {
 return new Promise(resolve => {
 setTimeout(() =>
 resolve(`done ${prop}`), 1000);
 })
}

const go = async () => {
 const list = [1, 2, 3]
 
 for (const prop of list) {
 console.log(prop)
 console.log(await fun(prop))
 }
 
 console.log('done all')
}

go()

需要將循環放置在一個 async 函數中,然後才能使用 await,循環會停止迭代,直到等待的 Promise 解決為止。

您也可以使用 for..in 循環來迭代對象:

const fun = (prop) => {
 return new Promise(resolve => {
 setTimeout(() =>
 resolve(`done ${prop}`), 1000);
 })
}

const go = async () => {
 const obj = { a: 1, b: 2, c: 3 };

 for (const prop in obj) {
 console.log(prop)
 console.log(await fun(prop))
 }
 
 console.log('done all')
}

go()

使用相同的結構,您還可以使用 whiledo..whilefor 循環。

但是你無法在 Array.forEach()Array.map() 中使用 await。