Ich habe Schwierigkeiten zu verstehen, wie man mit Gruppen von Versprechen arbeitet, die zusammen lösen müssen.Mit Gruppen von Versprechen arbeiten
In meiner Situation möchte ich eine Reihe von Versprechen Aufrufe basierend auf einem Array von IDs machen, und sie selektiv zu einem Ausgabe-Array hinzufügen. Wenn diese PHP wären, würde ich so etwas wie:
$output = []
foreach($input as $id) {
$result1 = functioncall1($id);
$result2 = functioncall2($result1);
if ($result2 == 'some filter') {
$output[] = $result1;
}
}
Dies kann nicht mit einem asynchronen Aufruf erfolgen, da die Schleife nicht für das Ergebnis nicht warten, um zurückzukehren. Also ich bin mit Versprechungen mit drossel wie folgt aus:
Promise.map(input, function(id) {
promisifedFunction1(id)
.then(function(result1) {
//process result1 some more
promisifedFunction2(result1)
.then(function(result2) {
//process result2 some more
if (result2 == 'some filter') {
return result1;
});
});
})
.then(function(output) {});
}
ich klar hier etwas fehle, weil mein Ausgang immer nur eine Reihe von undefinierten enthält. Aber es ist anscheinend Mapping und erreicht das Finale dann, wenn ich es erwarte und diese undefinierten Arrays werden nur erzeugt, wenn die Filterung ok ist. Das Undefinierte wird erzeugt, auch wenn der Filter nur eine Literal-Zeichenfolge zurückgibt.
Ich bin Clearing fehlt etwas, aber ich habe Mühe, die Lücken zu füllen.
'Promise.all' ... https://developer.mozilla.org/en-US/docs/Web/JavaScript/Referenz/Global_Objects/Versprechen/alle –