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 triggers accetta qualsiasi iterable, incluse le implementazioni di Iterator. Vedi l’esempio con Iterator.

Vedi anche