Scope::cancel
(PHP 8.6+, True Async 1.0)
public function cancel(?AsyncCancellation $cancellationError = null): void
Cancella tutte le coroutine appartenenti allo scope specificato. Ogni coroutine attiva ricevera’ una CancelledException. Se $cancellationError e’ specificato, verra’ utilizzato come motivo della cancellazione.
Parametri
cancellationError — un’eccezione di cancellazione personalizzata. Se null, viene utilizzata la CancelledException standard.
Valore di ritorno
Non viene restituito alcun valore.
Esempi
Esempio #1 Cancellazione base
<?php
use Async\Scope;
$scope = new Scope();
$scope->spawn(function() {
try {
\Async\delay(60_000); // Operazione lunga
} catch (\Async\CancelledException $e) {
echo "Coroutine cancellata\n";
}
});
// Cancella tutte le coroutine
$scope->cancel();
Esempio #2 Cancellazione con errore personalizzato
<?php
use Async\Scope;
use Async\AsyncCancellation;
$scope = new Scope();
$scope->spawn(function() {
try {
\Async\delay(60_000);
} catch (\Async\CancelledException $e) {
echo "Motivo: " . $e->getMessage() . "\n";
}
});
$error = new AsyncCancellation("Timeout superato");
$scope->cancel($error);
Vedi anche
- Scope::dispose — Cancella e chiudi lo scope
- Scope::isCancelled — Verifica se lo scope e’ stato cancellato
- Scope::awaitAfterCancellation — Attende dopo la cancellazione