ComponentiFuture::await

Future::await ​

(PHP 8.6+, True Async 1.0)

php
public function await(?Completable $cancellation = null): mixed

Attende il completamento del Future e restituisce il suo risultato. Blocca la coroutine corrente fino al completamento del Future. Se il Future si e' completato con un errore, il metodo lancia quell'eccezione. E' possibile passare un Completable per annullare l'attesa tramite timeout o condizione esterna.

Parametri ​

cancellation --- un oggetto di annullamento dell'attesa. Se fornito e attivato prima del completamento del Future, viene lanciata una AsyncCancellation. Il valore predefinito e' null.

Valore di ritorno ​

mixed --- il risultato del Future.

Errori ​

Lancia un'eccezione se il Future si e' completato con un errore o e' stato annullato.

Esempi ​

Esempio #1 Attesa base del risultato ​

php
<?php

use Async\Future;
use Async\FutureState;

$state  = new FutureState();
$future = new Future($state);

\Async\spawn(function() use ($state) {
    \Async\delay(100);
    $state->complete(42);
});

$result = $future->await();
echo "Result: $result\n"; // Result: 42

Esempio #2 Gestione degli errori durante l'attesa ​

php
<?php

use Async\Future;
use Async\FutureState;

$state  = new FutureState();
$future = new Future($state);

\Async\spawn(function() use ($state) {
    $state->error(new \RuntimeException("Something went wrong"));
});

try {
    $result = $future->await();
} catch (\RuntimeException $e) {
    echo "Error: " . $e->getMessage() . "\n";
    // Error: Something went wrong
}

Vedi anche ​