等待所有异步请求完成内部循环

时间:2018-05-09 21:00:45

标签: javascript node.js asynchronous axios

我需要将所有结果推送到一个进行异步http调用的数组中,但我需要等到所有调用完成。

async function(){
  const arrayWithResults = [];
  const urls = ['someurl.com', 'otherurl.com'];
  urls.map( url => {
    axios.get(url).then( result => {
      arrayWithResults.push(result);
    }
  });
}

在这里使用等待唯一选项吗?我害怕使用它,因为等待每个请求会减慢整个过程。

1 个答案:

答案 0 :(得分:1)

await代之以Promise.all的返回值:

const arrayWithResults = await Promise.all(
  urls.map(url => axios.get(url))
);

Promise.all返回一个承诺,一旦传递给它的所有承诺得到解决,它就会立即解决。