JavaScript/Objekte/Promise/any
Die Methode Promise.any dient dazu, eine Anzahl gleichzeitig schwebender Promises in einem Promise zu konsolidieren. Außer Promises können auch Thenables übergeben werden.
Man erhält ein Promise, mit dessen Hilfe man auf das erste erfüllte Promise warten kann.
Die Übergabe anderer Werte, wie z. B. bei Promise.all, ist auch hier möglich, ergibt aber kaum einen Sinn, weil ein solcher Wert einem bereits erfüllten Promise entspricht und any() sofort beendet.
Syntax
const promise = Promise.any( promises );
Parameter
-
promises - muss ein iterierbares Objekt sein (beispielsweise ein Array), das beim Durchlaufen die Promises liefert, die konsolidiert werden sollen.
Rückgabe
- Ein Promise, das auf fulfilled gesetzt wird, wenn das erste der übergebenen Promises sich erfüllt. Dessen Wert wird ins Ergebnispromise übernommen.
Eigenschaften
Hinweis: Jedes Promise ist auch ein Thenable!
Die Promise.any-Methode durchläuft die übergebenen Werte mit Hilfe des Iterator-Protokolls. Wenn sie dabei auf einen Thenable-Objekt trifft, registriert sie die erforderlichen Callbacks, um das Ergebnis dieses Thenable zu übernehmen.
Der erste onFulfilled-Callback, der aufgerufen wird, legt den Zustand und den Wert des Rückgabepromises fest. Aufrufe von onRejected-Callbacks werden ignoriert.
Ein Anwendungsfall für any() könnte Resource-Hedging sein. Damit ist gemeint, dass man eine Ressource an mehreren Stellen anfragt und das erste Ergebnis verwendet. Wenn man gutartig sein will, kann man die übrigen Ressourcenanfragen dann noch abbrechen.
Das ist allerdings zu umfangreich, um es in einem Wiki-Artikel vorzustellen.
Siehe auch
- Promise.race: Variante von
any, die sich dann festlegt, wenn das erste der übergebenen Promises festgelegt wird - Promise.all: Eine Concurrency-Methode, die nicht nach dem ersten erfüllten Promise aufhört, sondern wartet, bis alle übergebenen Promises erfüllt sind oder eines zurückgewiesen wird