Scope::finally
(PHP 8.6+, True Async 1.0)
php
public function finally(\Closure $callback): voidRegistra una función callback que se ejecutará cuando el ámbito finalice. Es el equivalente de un bloque finally para un ámbito, garantizando que el código de limpieza se ejecute independientemente de cómo terminó el ámbito (normalmente, por cancelación o con un error).
Parámetros
callback — el closure que se llamará cuando el ámbito finalice.
Valor de retorno
No se devuelve ningún valor.
Ejemplos
Ejemplo #1 Limpieza de recursos
php
<?php
use Async\Scope;
$scope = new Scope();
$scope->finally(function() {
echo "Scope completed, cleaning up resources\n";
// Close connections, delete temporary files
});
$scope->spawn(function() {
echo "Executing task\n";
});
$scope->awaitCompletion(Async\timeout(5000));
// Output: "Executing task"
// Output: "Scope completed, cleaning up resources"Ejemplo #2 Múltiples callbacks
php
<?php
use Async\Scope;
$scope = new Scope();
$scope->finally(function() {
echo "Closing database connection\n";
});
$scope->finally(function() {
echo "Writing metrics\n";
});
$scope->spawn(function() {
\Async\delay(1000);
});
$scope->dispose();
// Both callbacks will be invoked when the scope completesVer también
- Scope::dispose — Cerrar el ámbito
- Scope::isFinished — Verificar si el ámbito ha finalizado
- Coroutine::finally — Callback de finalización de corrutina