TaskSet::finally

(PHP 8.6+, True Async 1.0)

public TaskSet::finally(Closure $callback): void

Registra un callback que se invoca cuando el conjunto está sellado y todas las tareas se han completado. El callback recibe el TaskSet como parámetro.

Dado que cancel() llama implícitamente a seal(), el handler también se dispara al cancelar.

Si el conjunto ya ha finalizado, el callback se invoca de forma síncrona inmediatamente.

Parámetros

callback
Closure que acepta TaskSet como único argumento.

Ejemplos

Ejemplo #1 Registro de finalización

<?php

use Async\TaskSet;

spawn(function() {
    $set = new TaskSet();

    $set->finally(function(TaskSet $s) {
        echo "Set completed\n";
    });

    $set->spawn(fn() => "a");
    $set->spawn(fn() => "b");

    $set->seal();
    $set->joinAll()->await();
});
// Output:
// Set completed

Ejemplo #2 Llamada en un conjunto ya finalizado

<?php

use Async\TaskSet;

spawn(function() {
    $set = new TaskSet();
    $set->spawn(fn() => 1);
    $set->seal();
    $set->joinAll()->await();

    // El conjunto ya finalizó — el callback se invoca síncronamente
    $set->finally(function(TaskSet $s) {
        echo "called immediately\n";
    });

    echo "after finally\n";
});
// Output:
// called immediately
// after finally

Ver también