await_any_of_or_fail
(PHP 8.6+, True Async 1.0)
await_any_of_or_fail() — Attende i primi N task completati con successo. Se uno dei primi N fallisce, lancia un’eccezione.
Descrizione
await_any_of_or_fail(
int $count,
iterable $triggers,
?Async\Awaitable $cancellation = null,
bool $preserveKeyOrder = true
): array
Parametri
count
Il numero di risultati riusciti da attendere. Se 0, restituisce un array vuoto.
triggers
Una collezione iterabile di oggetti Async\Completable.
cancellation
Un Awaitable opzionale per annullare l’attesa.
preserveKeyOrder
Se true, le chiavi dei risultati corrispondono alle chiavi dell’array di input. Se false, nell’ordine di completamento.
Valori di ritorno
Un array di $count risultati riusciti.
Errori/Eccezioni
Se un task fallisce prima di raggiungere $count successi, l’eccezione viene lanciata.
Esempi
Esempio #1 Ottenere 2 risultati su 5
<?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");
}
// Attendi qualsiasi 2 risposte riuscite
$results = await_any_of_or_fail(2, $coroutines);
echo count($results); // 2
?>
Note
Nota: Il parametro
triggersaccetta qualsiasiiterable, incluse le implementazioni diIterator. Vedi l’esempio con Iterator.
Vedi anche
- await_any_of() — primi N con tolleranza agli errori
- await_all_or_fail() — tutti i task