diese Funktion betrachten, die eine Datenbank spottet Abfragen und einige Datensätze nach 2 Sekunden, über ein Versprechen der Rückkehr:Warum wartet Node auf ein einzelnes Versprechen, aber nicht auf eine Reihe von Versprechen?
function query() {
var recs = [1,2,3];
return new Promise(r => setTimeout(() => r(recs), 2000))
}
Wenn ich die folgende Anweisung hinzu:
query().then(console.log);
und führen Sie das das Skript mit Knoten, pausiert 2 Sekunden, druckt die Datensätze aus und kehrt wie erwartet zurück.
Auf der anderen Seite, wenn ich mit einer Reihe von exakt den gleichen Versprechungen, die Zeile:
Array(5).map(x => query().then(console.log));
Das Skript sofort zurück, und nichts druckt. Warum wartet Node darauf, dass das einzelne Versprechen vor dem Beenden zurückgegeben wird, aber sofort beendet wird, wenn ein Array von 5 nicht aufgelösten Versprechen vorhanden ist?
Wenn Sie ein gelöstes Versprechen warten möchten, um einen anderen auszuführen, würde dieser Beitrag Sie mögen: http://stackoverflow.com/questions/37578795/implementing-promise-series-alternative-to-promise-all –