Scope::finally

(PHP 8.6+, True Async 1.0)

public function finally(\Closure $callback): void

Registriert eine Callback-Funktion, die beim Abschluss des Scopes ausgefuehrt wird. Dies ist das Aequivalent eines finally-Blocks fuer einen Scope und garantiert, dass Bereinigungscode unabhaengig davon ausgefuehrt wird, wie der Scope beendet wurde (normal, durch Abbruch oder mit einem Fehler).

Parameter

callback — die Closure, die beim Abschluss des Scopes aufgerufen wird.

Rueckgabewert

Es wird kein Wert zurueckgegeben.

Beispiele

Beispiel #1 Ressourcenbereinigung

<?php

use Async\Scope;

$scope = new Scope();

$scope->finally(function() {
    echo "Scope abgeschlossen, Ressourcen werden bereinigt\n";
    // Verbindungen schliessen, temporaere Dateien loeschen
});

$scope->spawn(function() {
    echo "Aufgabe wird ausgefuehrt\n";
});

$scope->awaitCompletion();
// Ausgabe: "Aufgabe wird ausgefuehrt"
// Ausgabe: "Scope abgeschlossen, Ressourcen werden bereinigt"

Beispiel #2 Mehrere Callbacks

<?php

use Async\Scope;

$scope = new Scope();

$scope->finally(function() {
    echo "Datenbankverbindung wird geschlossen\n";
});

$scope->finally(function() {
    echo "Metriken werden geschrieben\n";
});

$scope->spawn(function() {
    \Async\delay(1000);
});

$scope->dispose();
// Beide Callbacks werden beim Abschluss des Scopes aufgerufen

Siehe auch