await_first_success
(PHP 8.6+, True Async 1.0)
await_first_success() — Wartet auf die erste erfolgreich abgeschlossene Aufgabe. Fehler anderer Aufgaben werden separat gesammelt und unterbrechen das Warten nicht.
Beschreibung
await_first_success(
iterable $triggers,
?Async\Awaitable $cancellation = null
): array
Parameter
triggers
Eine iterierbare Sammlung von Async\Completable-Objekten.
cancellation
Ein optionales Awaitable zum Abbrechen des Wartens.
Rueckgabewerte
Ein Array mit zwei Elementen: [$result, $errors]
$result— das Ergebnis der ersten erfolgreich abgeschlossenen Aufgabe (odernull, wenn alle Aufgaben fehlgeschlagen sind)$errors— Array der Ausnahmen von Aufgaben, die vor dem ersten Erfolg fehlgeschlagen sind
Beispiele
Beispiel #1 Fehlertolerante Anfrage
<?php
use function Async\spawn;
use function Async\await_first_success;
// Mehrere Server versuchen; die erste erfolgreiche Antwort nehmen
[$result, $errors] = await_first_success([
spawn(file_get_contents(...), 'https://primary.example.com/api'),
spawn(file_get_contents(...), 'https://secondary.example.com/api'),
spawn(file_get_contents(...), 'https://fallback.example.com/api'),
]);
if ($result !== null) {
echo "Daten empfangen\n";
} else {
echo "Alle Server nicht erreichbar\n";
foreach ($errors as $error) {
echo " - " . $error->getMessage() . "\n";
}
}
?>
Hinweise
Hinweis: Der Parameter
triggersakzeptiert jedesiterable, einschliesslichIterator-Implementierungen. Siehe das Iterator-Beispiel.
Siehe auch
- await_any_or_fail() — erste Aufgabe, Fehler bricht ab
- await_all() — alle Aufgaben mit Fehlertoleranz