KomponentenTaskSet::finally

TaskSet::finally ​

(PHP 8.6+, True Async 1.0)

php
public TaskSet::finally(Closure $callback): void

Registriert einen Callback, der aufgerufen wird, wenn das Set geschlossen ist und alle Tasks abgeschlossen sind. Der Callback erhält das TaskSet als Parameter.

Da cancel() implizit close() aufruft, wird der Handler auch bei einem Abbruch ausgelöst.

Wenn das Set bereits abgeschlossen ist, wird der Callback sofort synchron aufgerufen.

Parameter ​

callback : Closure, die TaskSet als einziges Argument akzeptiert.

Beispiele ​

Beispiel #1 Abschluss protokollieren ​

php
<?php

use Async\TaskSet;

spawn(function() {
    $set = new TaskSet();

    $set->finally(function(TaskSet $s) {
        echo "Set abgeschlossen\n";
    });

    $set->spawn(fn() => "a");
    $set->spawn(fn() => "b");

    $set->close();
    $set->joinAll()->await();
});
// Ausgabe:
// Set abgeschlossen

Beispiel #2 Aufruf bei einem bereits abgeschlossenen Set ​

php
<?php

use Async\TaskSet;

spawn(function() {
    $set = new TaskSet();
    $set->spawn(fn() => 1);
    $set->close();
    $set->joinAll()->await();

    // Set ist bereits abgeschlossen — Callback wird synchron aufgerufen
    $set->finally(function(TaskSet $s) {
        echo "sofort aufgerufen\n";
    });

    echo "nach finally\n";
});
// Ausgabe:
// sofort aufgerufen
// nach finally

Siehe auch ​