Axios并行请求

时间:2019-07-16 22:15:12

标签: javascript node.js axios

几天前我有一个问题,让我们假设我们有以下3个承诺:

let promise1 = axios.get(URL1);
let promise2 = axios.get(URL2);
let promise3 = axios.get(URL3);

它们将异步执行并使用.then()返回数据,并假设每个GET请求花费1.00秒。

此请求的总执行将花费3秒,对吗?有什么方法可以并行执行此请求,以便我们在1秒内获得3个请求的数据?还是因为单线程语言而不可能?

谢谢。

2 个答案:

答案 0 :(得分:1)

您拥有的代码并行执行。这就是异步函数的重点。

虽然JavaScript在单个事件循环上运行(除非您使用Workers),但是异步代码不受该循环的约束。这就是为什么代码首先是异步的。

发出HTTP请求的责任已移交给事件循环之外的代码。这意味着它可以并行执行。

答案 1 :(得分:0)

您可以将axios.allaxios.spread结合使用:

axios.all([axios.get(URL1), axios.get(URL2), axios.get(URL3)])
     .then(axios.spread(url1resp, url2resp, url3resp) {
          // do something
     });