/

在 JavaScript 中如何在循環中使用 await

在 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()

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

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

tags: [“JavaScript”, “async/await”, “迭代”, “循環”]