await_any_of_or_fail
(PHP 8.6+, True Async 1.0)
await_any_of_or_fail() — Attend les N premières tâches terminées avec succès. Si l'une des N premières échoue, lève une exception.
Description
await_any_of_or_fail(
int $count,
iterable $triggers,
?Async\Awaitable $cancellation = null,
bool $preserveKeyOrder = true
): arrayParamètres
count Le nombre de résultats réussis à attendre. Si 0, retourne un tableau vide.
triggers Une collection itérable d'objets Async\Completable.
cancellation Un Awaitable optionnel pour annuler l'attente.
preserveKeyOrder Si true, les clés des résultats correspondent aux clés du tableau d'entrée. Si false, dans l'ordre d'achèvement.
Valeurs de retour
Un tableau de $count résultats réussis.
Erreurs/Exceptions
Si une tâche échoue avant d'atteindre $count succès, l'exception est levée.
Exemples
Exemple #1 Obtenir 2 résultats sur 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");
}
// Attendre 2 réponses réussies quelconques
$results = await_any_of_or_fail(2, $coroutines);
echo count($results); // 2
?>Notes
Note : Le paramètre
triggersaccepte toutiterable, y compris les implémentations d'Iterator. Voir l'exemple avec Iterator.
Voir aussi
- await_any_of() — N premières avec tolérance aux erreurs
- await_all_or_fail() — toutes les tâches