TaskGroup::finally
(PHP 8.6+, True Async 1.0)
public TaskGroup::finally(Closure $callback): void
Registra un callback che viene invocato quando il gruppo è sigillato e tutti i task sono completati. Il callback riceve il TaskGroup come parametro.
Poiché cancel() chiama implicitamente seal(), il gestore viene attivato anche in caso di cancellazione.
Se il gruppo è già terminato, il callback viene chiamato immediatamente in modo sincrono.
Parametri
- callback
- Una Closure che accetta
TaskGroupcome unico argomento.
Esempi
Esempio #1 Registrazione del completamento
<?php
use Async\TaskGroup;
spawn(function() {
$group = new TaskGroup();
$group->finally(function(TaskGroup $g) {
echo "Completati: " . $g->count() . " task\n";
});
$group->spawn(fn() => "a");
$group->spawn(fn() => "b");
$group->seal();
$group->all();
});
// Output:
// Completati: 2 task
Esempio #2 Chiamata su un gruppo già terminato
<?php
use Async\TaskGroup;
spawn(function() {
$group = new TaskGroup();
$group->spawn(fn() => 1);
$group->seal();
$group->all();
// Il gruppo è già terminato — il callback viene chiamato in modo sincrono
$group->finally(function(TaskGroup $g) {
echo "chiamato immediatamente\n";
});
echo "dopo finally\n";
});
// Output:
// chiamato immediatamente
// dopo finally
Vedi anche
- TaskGroup::seal — Sigilla il gruppo
- TaskGroup::cancel — Cancella i task