TaskGroup::finally

(PHP 8.6+, True Async 1.0)

php
public TaskGroup::finally(Closure $callback): void

Реєструє зворотний виклик, який виконується, коли група запечатана і всі задачі завершені. Зворотний виклик отримує TaskGroup як параметр.

Оскільки cancel() неявно викликає seal(), обробник також спрацьовує при скасуванні.

Якщо група вже завершена, зворотний виклик виконується синхронно негайно.

Параметри

callback : Closure, що приймає TaskGroup як єдиний аргумент.

Приклади

Приклад #1 Логування завершення

php
<?php

use Async\TaskGroup;

spawn(function() {
    $group = new TaskGroup();

    $group->finally(function(TaskGroup $g) {
        echo "Завершено: " . $g->count() . " задач\n";
    });

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

    $group->seal();
    $group->all();
});
// Виведе:
// Завершено: 2 задач

Приклад #2 Виклик на вже завершеній групі

php
<?php

use Async\TaskGroup;

spawn(function() {
    $group = new TaskGroup();
    $group->spawn(fn() => 1);
    $group->seal();
    $group->all();

    // Група вже завершена — зворотний виклик виконується синхронно
    $group->finally(function(TaskGroup $g) {
        echo "викликано негайно\n";
    });

    echo "після finally\n";
});
// Виведе:
// викликано негайно
// після finally

Дивіться також