Standardmäßig die Promise.All ([]) -Funktion gibt eine Anzahl-basierte Index-Array, das die Ergebnisse der einzelnen Versprechen enthält.Beste es6 Weg, Namen basierte Ergebnisse mit Promise.all
var promises = [];
promises.push(myFuncAsync1()); //returns 1
promises.push(myFuncAsync1()); //returns 2
Promise.all(promises).then((results)=>{
//results = [0,1]
}
Was ist der beste Weg, um einen Vanille benannten Index der Ergebnisse mit Promise.all zurückzukehren()?
habe ich versucht, mit einer Karte, aber es gibt Ergebnisse in einem Array auf diese Weise: [key1, value1, key2, value2]
UPDATE:
Meine Fragen scheint unklar, hier ist, warum ich nicht mag bestellt basierender Index:
- es ist beschissen zu halten: wenn Sie hinzufügen Ein Versprechen in Ihrem Code müssen Sie möglicherweise die gesamte Ergebnisfunktion neu schreiben, da der Index möglicherweise geändert haben.
- es ist schrecklich zu lesen:
results[42]
(kann unten mit Auslegern Antwort festgelegt werden) - Nicht wirklich brauchbar in einem dynamischen Kontext:
var promises = [];
if(...)
promises.push(...);
else{
[...].forEach(... => {
if(...)
promises.push(...);
else
[...].forEach(... => {
promises.push(...);
});
});
}
Promise.all(promises).then((resultsArr)=>{
/*Here i am basically fucked without clear named results
that dont rely on promises' ordering in the array */
});
Ich glaube nicht, dass Sie können oder sollten? Mit "named" nehme ich an, du meinst ein Objekt mit Schlüsseln und Werten, und was wären diese Schlüssel und was erwartest du zu bekommen? – adeneo
Viele Bibliotheken wie RSVP implementieren eine Hash-Methode. Möglicherweise benötigen Sie ein anderes Array wie ['myFuncAsync1', 'myFuncAsync2']. Und dann kartieren Sie die Ergebnisse wie Promise.all (verspricht) .then ((results) => { var temp = {}; results.forEach ((Ergebnis, Index) => { temp [VersprechungenNamen [Index]] = Ergebnis; }); Rücklauftemp; } .then (Ergebnis => {}) – blessenm
Schade, es ist nicht wie jQuery, in denen verspricht können Sie $ .when (deffered1, deffered2) DONE (function (result1 tun , result2) {...}) – phenxd