跳到主要内容

异步循环

前言

在开发的时候,会遇到需要一个一个请求,上个请求结束再请求下一个的情况,这就需要用到异步循环。
在es6中,我们可以使用async/await来实现异步循环。

源码


async function fetchData(ids) {
const results = [];
for (const id of ids) {
await new Promise((resolve) => setTimeout(resolve, 1000))
results.push(id)
}
console.log(results);
}

fetchData([1, 2, 3, 4, 5])

⚠️ 注意

和Promise.all的区别,Promise.all是并发请求,一口气会将所有请求都发送出去,有些服务端会限制短时间的多次请求,这个时候用异步循环会更合适。