Scope::finally
(PHP 8.6+, True Async 1.0)
php
public function finally(\Closure $callback): voidEnregistre 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
<?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(Async\timeout(5000));
// Sortie : "Executing task"
// Sortie : "Scope completed, cleaning up resources"Exemple #2 Callbacks multiples
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();
// Les deux callbacks seront invoqués lorsque le scope se termineVoir aussi
- Scope::dispose — Fermer le scope
- Scope::isFinished — Vérifier si le scope est terminé
- Coroutine::finally — Callback à la fin de la coroutine