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Дивіться також
- TaskGroup::seal --- Запечатати групу
- TaskGroup::cancel --- Скасувати задачі