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]

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 triggers akzeptiert jedes iterable, einschliesslich Iterator-Implementierungen. Siehe das Iterator-Beispiel.

Siehe auch