2016-03-21 10 views
1

Ich verwende Versprechen Node.js Bibliothek, und ich möchte folgendes tun:Promise.all nicht funktioniert, wenn es von einem .then() Rückruf zurückgegeben

  1. Ausführen asynchroner Operation, die eine Versprechung Rückkehr .
  2. Wenn diese Operation abgeschlossen ist, geben Sie eine Bestätigung zurück, die abgeschlossen ist, wenn zwei parallele asynchrone Vorgänge abgeschlossen sind.

Der Code Ich verwende ist die folgende:

var Promise = require('promise'); 

var resolved1 = Promise.resolve(1); 

var resolvedAll = resolved1.then(function() { 
    return Promise.all(Promise.resolve(2), Promise.resolve(3)); 
}); 

var print = resolvedAll.then(function(values) { 
    console.log(values); 
}); 

print.done(function() { 
    console.log('done'); 
}); 

Aber dieser Code nicht wie erwartet funktioniert, da er druckt:

[] 
done 

Von Doku, Promise.all kehrt Ein Versprechen, das sich löst, wenn alle Versprechen im iterablen Argument gelöst sind. Theoretisch sollte solvedAll nicht abgeschlossen werden, bis alle Versprechen, die an Promise.all übergeben wurden, abgeschlossen sind, aber das passiert hier nicht.

Eine Idee, warum Promise.all nicht wie erwartet funktioniert? Könnte das ein Fehler sein? Wer weiß Alternativen, um mehrere Versprechen aus einem Rückruf zurück zu geben?

Cheers, Galder

Antwort

4

Promise.all erwartet ein Array:

Promise.all([Promise.resolve(2), Promise.resolve(3)]); 
+0

Damm, das ist meine Erwartungen Java varargs in die Quere. Vielen Dank! –

Verwandte Themen