TaskGroup::finally

(PHP 8.6+, True Async 1.0)

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

그룹이 봉인되고 모든 태스크가 완료되었을 때 호출되는 콜백을 등록합니다. 콜백은 TaskGroup을 매개변수로 받습니다.

cancel()이 암묵적으로 seal()을 호출하므로, 취소 시에도 핸들러가 실행됩니다.

그룹이 이미 완료된 경우 콜백은 즉시 동기적으로 호출됩니다.

매개변수

callback : TaskGroup을 유일한 인자로 받는 Closure입니다.

예제

예제 #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 이후

참고