await_any_of_or_fail
(PHP 8.6+, True Async 1.0)
await_any_of_or_fail() — Espera a que las primeras N tareas se completen exitosamente. Si una de las primeras N falla, lanza una excepción.
Descripción
await_any_of_or_fail(
int $count,
iterable $triggers,
?Async\Awaitable $cancellation = null,
bool $preserveKeyOrder = true
): array
Parámetros
count
El número de resultados exitosos que se esperan. Si es 0, devuelve un array vacío.
triggers
Una colección iterable de objetos Async\Completable.
cancellation
Un Awaitable opcional para cancelar la espera.
preserveKeyOrder
Si es true, las claves de los resultados corresponden a las claves del array de entrada. Si es false, en orden de finalización.
Valores de retorno
Un array de $count resultados exitosos.
Errores/Excepciones
Si una tarea falla antes de alcanzar $count éxitos, se lanza la excepción.
Ejemplos
Ejemplo #1 Obtener 2 de 5 resultados
<?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");
}
// Esperar cualquier 2 respuestas exitosas
$results = await_any_of_or_fail(2, $coroutines);
echo count($results); // 2
?>
Notas
Nota: El parámetro
triggersacepta cualquieriterable, incluyendo implementaciones deIterator. Consulte el ejemplo con Iterator.
Ver también
- await_any_of() — primeras N con tolerancia a errores
- await_all_or_fail() — todas las tareas