Beste es6 Möglichkeit, mit Promise.all namenbasierte Ergebnisse zu erhalten
Standardmäßig gibt die Funktion Promise.All ([]) ein auf Zahlen basierendes Index-Array zurück, das die Ergebnisse der einzelnen Versprechen enthält.
var promises = [];
promises.push(myFuncAsync1()); //returns 1
promises.push(myFuncAsync1()); //returns 2
Promise.all(promises).then((results)=>{
//results = [0,1]
}
Was ist die beste Vanille-Methode, um mit Promise.all () einen benannten Ergebnisindex zurückzugeben?
Ich habe es mit einer Map versucht, aber es gibt die folgenden Ergebnisse in einem Array zurück:[key1, value1, key2, value2]
AKTUALISIEREN
Meine Fragen scheinen unklar zu sein, hier ist, warum ich einen geordneten Index nicht mag:
es ist beschissen zu pflegen: Wenn Sie Ihrem Code ein Versprechen hinzufügen, müssen Sie möglicherweise die gesamte Ergebnisfunktion neu schreiben, da sich der Index möglicherweise geändert hat. es ist schrecklich zu lesen:results[42]
(kann mit der Antwort von jib unten behoben werden)Nicht wirklich in einem dynamischen Kontext verwendbar: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 */
});