我正在梳理Bluebird docs,他们建议使用Promise.join
而非Promise.all
进行并发离散承诺。
文档说
当您拥有要同时协调的固定数量的离散承诺时,Promise.join更容易使用(并且性能更高)。
然而,对绩效评论没有任何解释。
我看到的唯一区别是.all
执行解包数组的额外操作。看起来像是一种延伸,称之为“性能更高”。所以也许还有别的什么呢?
任何解释都会有所帮助,谢谢!
答案 0 :(得分:0)
我没有看到任何重大的性能影响。在这里查看小提琴以对此进行基准测试:
https://jsfiddle.net/msmta/3936tnca/
// spread
function startSpreadTest() {
var startTime = new Date()
var spreadArray = []
for(var i = 0; i < promiseCount; i++)
spreadArray.push(Promise.delay(promiseDelay))
return Promise.all(spreadArray).spread(function(){
return getStopTime(startTime)
})
}
// join
function startJoinTest() {
var startTime = new Date()
var args = []
for(var i = 0; i < promiseCount; i++)
args.push(Promise.delay(promiseDelay))
args.push(function(){
return getStopTime(startTime)
})
return Promise.join.apply(null, args)
}