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 Ітерована колекція об’єктів 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.

Дивіться також