await_first_success
(PHP 8.6+, True Async 1.0)
await_first_success() — Attende il primo task completato con successo. Gli errori degli altri task vengono raccolti separatamente e non interrompono l’attesa.
Descrizione
await_first_success(
iterable $triggers,
?Async\Awaitable $cancellation = null
): array
Parametri
triggers
Una collezione iterabile di oggetti Async\Completable.
cancellation
Un Awaitable opzionale per annullare l’attesa.
Valori di ritorno
Un array di due elementi: [$result, $errors]
$result— il risultato del primo task completato con successo (onullse tutti i task sono falliti)$errors— array delle eccezioni dai task falliti prima del primo successo
Esempi
Esempio #1 Richiesta fault-tolerant
<?php
use function Async\spawn;
use function Async\await_first_success;
// Prova più server; prendi la prima risposta riuscita
[$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 "Dati ricevuti\n";
} else {
echo "Tutti i server non disponibili\n";
foreach ($errors as $error) {
echo " - " . $error->getMessage() . "\n";
}
}
?>
Note
Nota: Il parametro
triggersaccetta qualsiasiiterable, incluse le implementazioni diIterator. Vedi l’esempio con Iterator.
Vedi anche
- await_any_or_fail() — primo task, errore interrompe
- await_all() — tutti i task con tolleranza agli errori