下面是如何使用 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()
使用相同的結構,您還可以使用 while
、do..while
或 for
循環。
但是你無法在 Array.forEach()
或 Array.map()
中使用 await。