TaskGroup::finally
(PHP 8.6+, True Async 1.0)
public TaskGroup::finally(Closure $callback): void
Registra un callback que se invoca cuando el grupo está sellado y todas las tareas se han completado. El callback recibe el TaskGroup como parámetro.
Dado que cancel() llama implícitamente a seal(), el manejador también se dispara en la cancelación.
Si el grupo ya ha finalizado, el callback se llama de forma sincrónica inmediatamente.
Parámetros
- callback
- Un Closure que recibe
TaskGroupcomo su único argumento.
Ejemplos
Ejemplo #1 Registro de finalización
<?php
use Async\TaskGroup;
spawn(function() {
$group = new TaskGroup();
$group->finally(function(TaskGroup $g) {
echo "Completadas: " . $g->count() . " tareas\n";
});
$group->spawn(fn() => "a");
$group->spawn(fn() => "b");
$group->seal();
$group->all();
});
// Salida:
// Completadas: 2 tareas
Ejemplo #2 Llamada en un grupo ya finalizado
<?php
use Async\TaskGroup;
spawn(function() {
$group = new TaskGroup();
$group->spawn(fn() => 1);
$group->seal();
$group->all();
// El grupo ya finalizó — el callback se llama de forma sincrónica
$group->finally(function(TaskGroup $g) {
echo "llamado inmediatamente\n";
});
echo "después de finally\n";
});
// Salida:
// llamado inmediatamente
// después de finally
Ver también
- TaskGroup::seal — Sellar el grupo
- TaskGroup::cancel — Cancelar tareas