几天前我有一个问题,让我们假设我们有以下3个承诺:
let promise1 = axios.get(URL1);
let promise2 = axios.get(URL2);
let promise3 = axios.get(URL3);
它们将异步执行并使用.then()
返回数据,并假设每个GET请求花费1.00秒。
此请求的总执行将花费3秒,对吗?有什么方法可以并行执行此请求,以便我们在1秒内获得3个请求的数据?还是因为单线程语言而不可能?
谢谢。
答案 0 :(得分:1)
您拥有的代码将并行执行。这就是异步函数的重点。
虽然JavaScript在单个事件循环上运行(除非您使用Workers),但是异步代码不受该循环的约束。这就是为什么代码首先是异步的。
发出HTTP请求的责任已移交给事件循环之外的代码。这意味着它可以并行执行。
答案 1 :(得分:0)
您可以将axios.all
与axios.spread
结合使用:
axios.all([axios.get(URL1), axios.get(URL2), axios.get(URL3)])
.then(axios.spread(url1resp, url2resp, url3resp) {
// do something
});