TaskGroup::finally
(PHP 8.6+, True Async 1.0)
public TaskGroup::finally(Closure $callback): void
Реєструє зворотний виклик, який виконується, коли група запечатана і всі задачі завершені. Зворотний виклик отримує TaskGroup як параметр.
Оскільки cancel() неявно викликає seal(), обробник також спрацьовує при скасуванні.
Якщо група вже завершена, зворотний виклик виконується синхронно негайно.
Параметри
- callback
- Closure, що приймає
TaskGroupяк єдиний аргумент.
Приклади
Приклад #1 Логування завершення
<?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
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 — Скасувати задачі