在 JavaScript 中如何在循環中使用 await
下面是如何使用 for..of
循環來迭代一個數組並在循環內部使用 await:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 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
循環來迭代對象:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 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。
tags: [“JavaScript”, “async/await”, “迭代”, “循環”]