Scope::finally
(PHP 8.6+, True Async 1.0)
public function finally(\Closure $callback): void
Enregistre une fonction de rappel qui sera exécutée lorsque le scope se termine. C’est l’équivalent d’un bloc finally pour un scope, garantissant que le code de nettoyage s’exécute quel que soit le mode de terminaison du scope (normalement, par annulation ou avec une erreur).
Paramètres
callback — la closure qui sera appelée lorsque le scope se termine.
Valeur de retour
Aucune valeur n’est retournée.
Exemples
Exemple #1 Nettoyage des ressources
<?php
use Async\Scope;
$scope = new Scope();
$scope->finally(function() {
echo "Scope completed, cleaning up resources\n";
// Fermer les connexions, supprimer les fichiers temporaires
});
$scope->spawn(function() {
echo "Executing task\n";
});
$scope->awaitCompletion();
// Sortie : "Executing task"
// Sortie : "Scope completed, cleaning up resources"
Exemple #2 Callbacks multiples
<?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();
// Les deux callbacks seront invoqués lorsque le scope se termine
Voir aussi
- Scope::dispose — Fermer le scope
- Scope::isFinished — Vérifier si le scope est terminé
- Coroutine::finally — Callback à la fin de la coroutine