Ich habe zwei Versprechen, unabhängig voneinander und ich möchte einen endgültigen Schritt nach machen beide Versprechen sind abgeschlossen (entweder ablehnt oder löst).Wie kann man single finally handler für mehrere Versprechen in AngularJS haben?
$ q.all() kann nicht verwendet werden, da ich die schließlich wollen immer (für beide Versprechen nur einmal) ausgeführt werden, selbst wenn eine der Versprechungen
Eine Lösung weist einen Zähler haben könnte und haben eine finallyHandler-Funktion, um es auszuführen, wenn beide Versprechen verfallen/zurückgewiesen werden.
var count = 0;
function finallyHandler() {
if (++count === 2) {
doStuff();
count = 0;
}
}
firstPromise.finally(finallyHandler);
secondPromise.finally(finallyHandler);
Diese Arbeit kann aber nicht richtig aus.
Gibt es einen besseren Weg, dies zu tun?
Was ist mit einem dritten Versprechen, das löst, wenn beide entweder gelöst oder zurückgewiesen? Es würde den Code leichter zu lesen und zu halten machen. – briosheje
@briosheje hat die richtige Idee. Erstellen Sie das Array von Versprechen, so dass jedes sein eigenes pass-through Fehlerverhalten hat. 'Versprechungen.Push (doStuff(). catch (e => e))', dann wenden Promise.all auf 'Versprechen' – danh