ComposantsFuture::await

Future::await ​

(PHP 8.6+, True Async 1.0)

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

Attend la complétion du Future et retourne son résultat. Bloque la coroutine courante jusqu'à ce que le Future soit complété. Si le Future s'est terminé avec une erreur, la méthode lève cette exception. Vous pouvez passer un Completable pour annuler l'attente par timeout ou condition externe.

Paramètres ​

cancellation — un objet d'annulation de l'attente. S'il est fourni et déclenché avant que le Future ne se complète, une AsyncCancellation sera levée. Par défaut null.

Valeur de retour ​

mixed — le résultat du Future.

Erreurs ​

Lève une exception si le Future s'est terminé avec une erreur ou a été annulé.

Exemples ​

Exemple #1 Attente basique du résultat ​

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

Exemple #2 Gestion des erreurs lors de l'attente ​

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
}

Voir aussi ​