此代码会发送更多请求
const pr1 = request1();
const pr2 = request2();
const pr3 = request3();
await Promise.all([pr1, pr2, pr3])
const res1 = await pr1
const res2 = await pr2
const res3 = await pr3
比
const pr1 = request1();
const pr2 = request2();
const pr3 = request3();
const [res1, res2, res3] = await Promise.all([pr1, pr2, pr3])
使用nodejs发送多个异步请求的最有效方法是什么?
答案 0 :(得分:0)
有诺言:
var promise1 = Promise.resolve(3);
var promise2 = 42;
var promise3 = new Promise(function(resolve, reject) {
setTimeout(resolve, 100, 'foo');
});
Promise.all([promise1, promise2, promise3]).then(function(values) {
console.log(values);
});
使用异步/等待:
让[foo,bar] =等待Promise.all([getFoo(),getBar()]);
答案 1 :(得分:0)
此代码会发送更多请求
否。
它发送三个请求。
然后等待所有问题解决。
然后等待它们中的每一个都解决(因为他们已经解决,这不会花费时间)将它们分配给变量。
等待解决的问题并非从头开始。
使用nodejs发送多个异步请求的最有效方法是什么?
如果两个版本的代码在实际性能上存在差异,我会感到惊讶。
使用解构的第二个版本(主观上)更易于阅读。
为维护您的代码的人写信(通常在6个月的时间内成为您)。为他们提供易于维护的代码将比尝试进行微优化节省更多。
答案 2 :(得分:-1)
如果每个请求都独立于其他请求,则可以如上所述使用await Promise.all([])
。但是,如果您需要上一个请求的结果,则需要等待每个请求。
const [res1, res2, res3] = await Promise.all([pr1, pr2, pr3])
答案 3 :(得分:-1)
const pr1 = request1();
const pr2 = request2();
const pr3 = request3();
const [res1, res2, res3] = await Promise.all([pr1, pr2, pr3])
这是最好的方法,它将触发3个并行请求,而不是顺序流。