异步循环
前言
在开发的时候,会遇到需要一个一个请求,上个请求结束再请求下一个的情况,这就需 要用到异步循环。
在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是并发请求,一口气会将所有请求都发送出去,有些服务端会限制短时间的多次请求,这个时候用异步循环会更合适。