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
): arrayParametri
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