Scope::dispose
(PHP 8.6+, True Async 1.0)
php
public function dispose(): voidЗакриває область видимості та скасовує всі її корутини. Після виклику dispose() область видимості позначається як закрита та скасована. Нові корутини не можуть бути додані до закритої області видимості.
Для області видимості без прапорця dispose-safely (new Scope() за замовчуванням) це еквівалентно виклику cancel() з подальшим закриттям області видимості. Область видимості з прапорцем, увімкненим через allowZombies() або успадкованим від батька з прапорцем, наприклад від головної (main) області видимості, замість скасування залишає корутини працювати як zombie, так само як disposeSafely().
Значення, що повертається
Значення не повертається.
Приклади
Приклад #1 Примусове закриття області видимості
php
<?php
use Async\Scope;
$scope = new Scope();
$scope->spawn(function() {
try {
\Async\delay(60_000);
} catch (\Async\AsyncCancellation) {
echo "Coroutine cancelled on dispose\n";
}
});
// All coroutines will be cancelled, scope closed
$scope->dispose();
var_dump($scope->isClosed()); // bool(true)
var_dump($scope->isCancelled()); // bool(true)Приклад #2 Очищення в блоці try/finally
php
<?php
use Async\Scope;
$scope = new Scope();
try {
$scope->spawn(function() {
// Business logic
\Async\delay(5000);
});
$scope->awaitCompletion(Async\timeout(5000));
} finally {
$scope->dispose();
}Дивіться також
- Scope::disposeSafely — Безпечне закриття (із зомбі)
- Scope::disposeAfterTimeout — Закриття після тайм-ауту
- Scope::cancel — Скасування без закриття області видимості