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