Future::ignore
(PHP 8.6+, True Async 1.0)
php
public function ignore(): FutureПомечает Future как игнорируемый. Если Future завершится с ошибкой и она не будет обработана, ошибка не будет передана в обработчик необработанных исключений event loop. Полезно для "fire-and-forget" задач, где результат не важен.
Возвращаемое значение
Future — возвращает тот же Future для цепочки вызовов.
Примеры
Пример #1 Игнорирование ошибок Future
php
<?php
use Async\Future;
use Async\FutureState;
// Запускаем задачу, ошибки которой нас не интересуют
$state = new FutureState();
$future = new Future($state);
$future->ignore();
\Async\spawn(function() use ($state) {
// Эта операция может завершиться с ошибкой
try {
sendAnalytics(['event' => 'page_view']);
$state->complete(null);
} catch (\Throwable $e) {
$state->error($e);
}
});
// Ошибка не будет передана в event loop handlerПример #2 Использование ignore с цепочкой методов
php
<?php
use Async\Future;
use Async\FutureState;
function warmupCache(array $keys): void {
foreach ($keys as $key) {
$state = new FutureState();
(new Future($state))->ignore(); // Ошибки кэширования не критичны
\Async\spawn(function() use ($state, $key) {
try {
$data = loadFromDatabase($key);
saveToCache($key, $data);
$state->complete(null);
} catch (\Throwable $e) {
$state->error($e);
}
});
}
}
warmupCache(['user:1', 'user:2', 'user:3']);См. также
- Future::catch — Обработка ошибки Future
- Future::finally — Callback при завершении Future