respektiert Ich verwende neueste stabile drossel:Drossel promise.all nicht Ergebnis um
"bluebird": "~3.4.0",
Und mit dem folgenden Code:
Promise.all([ParticipantsService.retrieveActiveParticipantsFromTheLocalDb(),
EventService.retrieveActiveEventsFromTheLocalDb(),
HeatService.retrieveActiveHeatsFromTheLocalDb()]).then(
function (results) {
var namedResults = {participants: results[0], events: results[1], heats: results[2]};
return res.render('runners/runners', namedResults);
}).catch(
function (err) {
winston.error('Failed to retrieve participants and or event details', err);
return res.send(err);
});
ich erwarten würde namedResults, um immer über die richtige Reihenfolge der Elemente, die der Reihenfolge entsprechen, in der das Array von Versprechen gemacht wurde, aber das ist nicht wahr! Ich habe jedes Mal eine andere Reihenfolge.
ich dies unter der Annahme, weil es ist, was es auf drossel der Dokumentation sagt: http://bluebirdjs.com/docs/api/promise.all.html Es sei denn, ich lese das falsch ...
Kann jemand helfen?
Dank
Nach meiner Erfahrung mit drossel, ist nicht respektiert die Ordnung. Schauen Sie sich dieses JSBin http://jsbin.com/sutemogilu/edit?js,console an - es funktioniert perfekt. Können Sie Ihre Funktion 'retrieveActiveParticipantsFromTheLocalDb' und die beiden anderen teilen? Vielleicht liegt es an ihnen. Übrigens kannst du die "Spread" -Methode anstelle von 'then' in' Promise.all' verwenden und das 'nameResult' überspringen, du kannst es auch im JSBin kommentiert sehen. –
Also, um es klar zu stellen: meinen Sie, dass "Teilnehmer", "Ereignisse" und "Heats" in "namedResult" falsche Werte erhalten? – robertklep
Wie kann ich das reproduzieren? –