Promise.join Promise.all之间的性能差异是什么?

时间:2016-11-03 16:46:03

标签: performance promise bluebird

我正在梳理Bluebird docs,他们建议使用Promise.join而非Promise.all进行并发离散承诺。

文档说

  

当您拥有要同时协调的固定数量的离散承诺时,Promise.join更容易使用(并且性能更高)。

然而,对绩效评论没有任何解释。

我看到的唯一区别是.all执行解包数组的额外操作。看起来像是一种延伸,称之为“性能更高”。所以也许还有别的什么呢?

任何解释都会有所帮助,谢谢!

1 个答案:

答案 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)
}