等待所有异步请求在循环内完成[重复]
Posted
技术标签:
【中文标题】等待所有异步请求在循环内完成[重复]【英文标题】:await for all of the async request to finish inside loop [duplicate] 【发布时间】:2018-10-20 01:54:51 【问题描述】:我需要将所有结果推送到一个进行异步 http 调用的数组中,但我需要等到所有调用都完成。
async function()
const arrayWithResults = [];
const urls = ['someurl.com', 'otherurl.com'];
urls.map( url =>
axios.get(url).then( result =>
arrayWithResults.push(result);
);
在这里使用 await 是唯一的选择吗?我害怕使用它,因为等待每个请求会减慢整个过程。
【问题讨论】:
但这里可能会有更好的答案:***.com/questions/37576685/… 【参考方案1】:await
的返回值改为Promise.all
:
const arrayWithResults = await Promise.all(
urls.map(url => axios.get(url))
);
Promise.all
返回一个 Promise,一旦传递给它的所有 Promise 都解决,该 Promise 就会解决。
【讨论】:
以上是关于等待所有异步请求在循环内完成[重复]的主要内容,如果未能解决你的问题,请参考以下文章
巨坑:浏览器在短时间内对于同一个请求的处理,会先等待上一个请求完成后,再处理下一个请求,导致在测试异步时误导代码有问题。