await_any_of_or_fail
(PHP 8.6+, True Async 1.0)
await_any_of_or_fail() — Wartet auf die ersten N erfolgreich abgeschlossenen Aufgaben. Wenn eine der ersten N fehlschlaegt, wird eine Ausnahme geworfen.
Beschreibung
await_any_of_or_fail(
int $count,
iterable $triggers,
?Async\Awaitable $cancellation = null,
bool $preserveKeyOrder = true
): array
Parameter
count
Die Anzahl der erfolgreichen Ergebnisse, auf die gewartet werden soll. Bei 0 wird ein leeres Array zurueckgegeben.
triggers
Eine iterierbare Sammlung von Async\Completable-Objekten.
cancellation
Ein optionales Awaitable zum Abbrechen des Wartens.
preserveKeyOrder
Wenn true, entsprechen die Ergebnisschluessel den Schluesseln des Eingabearrays. Wenn false, in Abschlussreihenfolge.
Rueckgabewerte
Ein Array mit $count erfolgreichen Ergebnissen.
Fehler/Ausnahmen
Wenn eine Aufgabe fehlschlaegt, bevor $count Erfolge erreicht werden, wird die Ausnahme geworfen.
Beispiele
Beispiel #1 Abrufen von 2 aus 5 Ergebnissen
<?php
use function Async\spawn;
use function Async\await_any_of_or_fail;
$coroutines = [];
for ($i = 0; $i < 5; $i++) {
$coroutines[] = spawn(file_get_contents(...), "https://api/server-$i");
}
// Auf beliebige 2 erfolgreiche Antworten warten
$results = await_any_of_or_fail(2, $coroutines);
echo count($results); // 2
?>
Hinweise
Hinweis: Der Parameter
triggersakzeptiert jedesiterable, einschliesslichIterator-Implementierungen. Siehe das Iterator-Beispiel.
Siehe auch
- await_any_of() — erste N mit Fehlertoleranz
- await_all_or_fail() — alle Aufgaben