Coroutine::isCompleted

(PHP 8.6+, True Async 1.0)

public Coroutine::isCompleted(): bool

Prueft, ob die Coroutine die Ausfuehrung beendet hat. Eine Coroutine gilt als abgeschlossen bei erfolgreichem Abschluss, bei Abschluss mit einem Fehler oder bei Abbruch.

Rueckgabewert

booltrue, wenn die Coroutine die Ausfuehrung beendet hat.

Beispiele

Beispiel #1 Abschluss pruefen

<?php

use function Async\spawn;
use function Async\await;

$coroutine = spawn(function() {
    return "test";
});

var_dump($coroutine->isCompleted()); // bool(false)

await($coroutine);

var_dump($coroutine->isCompleted()); // bool(true)

Beispiel #2 Nicht-blockierende Bereitschaftspruefung

<?php

use function Async\spawn;
use function Async\suspend;

$tasks = [
    spawn(fn() => file_get_contents('https://api1.example.com')),
    spawn(fn() => file_get_contents('https://api2.example.com')),
];

// Warten, bis alle abgeschlossen sind
while (true) {
    $allDone = true;
    foreach ($tasks as $task) {
        if (!$task->isCompleted()) {
            $allDone = false;
            break;
        }
    }
    if ($allDone) break;
    suspend();
}

Siehe auch