2016-11-03 7 views
2

Ich kämmte durch die Bluebird docs, und sie empfehlen Promise.join über Promise.all für gleichzeitige diskrete Versprechen.Was sind die Leistungsunterschiede zwischen Promise.join Promise.all?

Die Dokumentation sagt

Promise.join ist viel einfacher (und mehr performant) zu verwenden, wenn Sie eine feste Menge von diskreten Versprechungen, die Sie gleichzeitig koordinieren wollen.

Allerdings gibt es keine Erklärung über die Leistung Kommentar.

Der einzige Unterschied, den ich sehe, ist, dass .all die zusätzliche Operation des Entpackens des Arrays ausführt. Scheint so etwas wie "performanter" zu sein, also gibt es vielleicht noch etwas anderes unter der Haube?

Jede Erklärung wäre hilfreich, danke!

Antwort

0

Ich habe keine wesentlichen Auswirkungen auf die Leistung gesehen. Kasse der Fiddle hier für das Benchmarking dies:

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) 
} 
Verwandte Themen