await_any_or_fail

(PHP 8.6+, True Async 1.0)

await_any_or_fail() — Ожидает завершения первой задачи. Если первая завершившаяся задача выбросила исключение — оно пробрасывается.

Описание

await_any_or_fail(
    iterable $triggers,
    ?Async\Awaitable $cancellation = null
): mixed

Параметры

triggers Iterable коллекция объектов Async\Completable.

cancellation Опциональный Awaitable для отмены ожидания.

Возвращаемое значение

Результат первой завершившейся задачи.

Ошибки/Исключения

Если первая завершившаяся задача выбросила исключение, оно будет проброшено.

Примеры

Пример #1 Гонка запросов

<?php
use function Async\spawn;
use function Async\await_any_or_fail;

// Кто быстрее ответит — тот и выиграл
$result = await_any_or_fail([
    spawn(file_get_contents(...), 'https://mirror1.example.com/data'),
    spawn(file_get_contents(...), 'https://mirror2.example.com/data'),
    spawn(file_get_contents(...), 'https://mirror3.example.com/data'),
]);

echo "Получен ответ от самого быстрого зеркала\n";
?>

Примечания

Примечание: Параметр triggers принимает любые iterable, включая реализации Iterator. См. пример с Iterator.

См. также