Scope::finally
(PHP 8.6+, True Async 1.0)
public function finally(\Closure $callback): void
Registra 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
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();
// Output: "Executing task"
// Output: "Scope completed, cleaning up resources"
Ejemplo #2 Múltiples callbacks
<?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 completes
Ver también
- Scope::dispose — Cerrar el ámbito
- Scope::isFinished — Verificar si el ámbito ha finalizado
- Coroutine::finally — Callback de finalización de corrutina