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 TaskGroup como 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