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.
Дивіться також
- await_first_success() — перший успіх, ігноруючи помилки
- await_all_or_fail() — усі задачі