КомпонентыFuture::await

Future::await

(PHP 8.6+, True Async 1.0)

php
public function await(?Completable $cancellation = null): mixed

Ожидает завершения Future и возвращает его результат. Блокирует текущую корутину до тех пор, пока Future не будет завершён. Если Future завершился с ошибкой, метод выбрасывает это исключение. Можно передать Completable для отмены ожидания по таймауту или внешнему условию.

Параметры

cancellation — объект отмены ожидания. Если указан и сработает до завершения Future, будет выброшено AsyncCancellation. По умолчанию null.

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

mixed — результат Future.

Ошибки

Выбрасывает исключение, если Future завершён с ошибкой или был отменён.

Примеры

Пример #1 Базовое ожидание результата

php
<?php

use Async\Future;
use Async\FutureState;

$state  = new FutureState();
$future = new Future($state);

\Async\spawn(function() use ($state) {
    \Async\delay(100);
    $state->complete(42);
});

$result = $future->await();
echo "Результат: $result\n"; // Результат: 42

Пример #2 Обработка ошибки при ожидании

php
<?php

use Async\Future;
use Async\FutureState;

$state  = new FutureState();
$future = new Future($state);

\Async\spawn(function() use ($state) {
    $state->error(new \RuntimeException("Что-то пошло не так"));
});

try {
    $result = $future->await();
} catch (\RuntimeException $e) {
    echo "Ошибка: " . $e->getMessage() . "\n";
    // Ошибка: Что-то пошло не так
}

См. также