TaskSet::finally
(PHP 8.6+, True Async 1.0)
public TaskSet::finally(Closure $callback): void
Registriert 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
TaskSetals einziges Argument akzeptiert.
Beispiele
Beispiel #1 Abschluss protokollieren
<?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 abgeschlossen
Beispiel #2 Aufruf bei einem bereits abgeschlossenen Set
<?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 finally
Siehe auch
- TaskSet::seal — Das Set versiegeln
- TaskSet::awaitCompletion — Auf den Abschluss warten