await_any_of_or_fail
(PHP 8.6+, True Async 1.0)
await_any_of_or_fail() — Ожидает успешного завершения первых N задач. При ошибке в одной из первых N — выбрасывает исключение.
Описание
await_any_of_or_fail(
int $count,
iterable $triggers,
?Async\Awaitable $cancellation = null,
bool $preserveKeyOrder = true
): array
Параметры
count
Количество успешных результатов, которое нужно дождаться. Если 0 — возвращает пустой массив.
triggers
Iterable коллекция объектов Async\Completable.
cancellation
Опциональный Awaitable для отмены ожидания.
preserveKeyOrder
Если true, ключи результатов соответствуют ключам входного массива. Если false — в порядке завершения.
Возвращаемое значение
Массив из $count успешных результатов.
Ошибки/Исключения
Если одна из задач завершается с ошибкой до достижения $count успешных — выбрасывает исключение.
Примеры
Пример #1 Получение 2 из 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");
}
// Ждём любые 2 успешных ответа
$results = await_any_of_or_fail(2, $coroutines);
echo count($results); // 2
?>
Примечания
Примечание: Параметр
triggersпринимает любыеiterable, включая реализацииIterator. См. пример с Iterator.
См. также
- await_any_of() — первые N с допуском ошибок
- await_all_or_fail() — все задачи