TaskSet::finally
(PHP 8.6+, True Async 1.0)
php
public TaskSet::finally(Closure $callback): voidRegistriert einen Callback, der aufgerufen wird, wenn das Set versiegelt ist und alle Tasks abgeschlossen sind. Der Callback erhält das TaskSet als Parameter.
Da cancel() implizit seal() 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->seal();
$set->joinAll()->await();
});
// Ausgabe:
// Set abgeschlossenBeispiel #2 Aufruf bei einem bereits abgeschlossenen Set
php
<?php
use Async\TaskSet;
spawn(function() {
$set = new TaskSet();
$set->spawn(fn() => 1);
$set->seal();
$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 finallySiehe auch
- TaskSet::seal — Das Set versiegeln
- TaskSet::awaitCompletion — Auf den Abschluss warten