Future::finally
(PHP 8.6+, True Async 1.0)
public function finally(callable $finally): Future
Регистрирует callback, который выполняется при завершении Future независимо от результата — успеха, ошибки или отмены. Future резолвится с тем же значением или ошибкой, что и исходный. Полезен для освобождения ресурсов.
Параметры
finally — функция, выполняемая при завершении. Не принимает аргументов. Сигнатура: function(): void.
Возвращаемое значение
Future — новый Future, который завершится с тем же значением или ошибкой, что и исходный.
Примеры
Пример #1 Освобождение ресурсов
<?php
use Async\Future;
$connection = openDatabaseConnection();
$future = \Async\async(function() use ($connection) {
return $connection->query("SELECT * FROM users");
})
->finally(function() use ($connection) {
$connection->close();
echo "Соединение закрыто\n";
});
$users = $future->await();
Пример #2 Цепочка с map, catch и finally
<?php
use Async\Future;
$future = \Async\async(function() {
return fetchDataFromApi();
})
->map(fn($data) => processData($data))
->catch(function(\Throwable $e) {
error_log("Ошибка: " . $e->getMessage());
return [];
})
->finally(function() {
echo "Операция завершена\n";
});
$result = $future->await();
См. также
- Future::map — Трансформация результата Future
- Future::catch — Обработка ошибки Future
- Future::ignore — Игнорировать необработанные ошибки