Thread::getResult

(PHP 8.6+, True Async 1.0)

php
public Thread::getResult(): mixed

Возвращает значение, которое вернула функция потока, если поток завершился успешно. Возвращает null, если поток ещё не завершился, завершился с исключением или был отменён.

Важно: метод не бросает исключений и не ожидает завершения потока. Для блокирующего ожидания с распространением исключений используйте await(). Для получения ошибки используйте getException().

Возвращаемое значение

mixed — результат выполнения функции потока, либо null.

Примеры

Пример #1 Получение результата после isCompleted()

php
<?php

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

spawn(function() {
    $thread = spawn_thread(function() {
        return array_sum(range(1, 1000));
    });

    // Ждём завершения
    await($thread);

    if ($thread->isCompleted() && $thread->getException() === null) {
        echo "Результат: " . $thread->getResult() . "\n"; // 500500
    }
});

Пример #2 Сравнение с await()

php
<?php

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

spawn(function() {
    $thread = spawn_thread(function() {
        return "данные";
    });

    // Вариант 1: await() — ждёт и бросает исключение при ошибке
    try {
        $result = await($thread);
        echo "await: $result\n";
    } catch (\Throwable $e) {
        echo "Ошибка: " . $e->getMessage() . "\n";
    }

    // Вариант 2: getResult() — не ждёт, не бросает
    $thread2 = spawn_thread(fn() => "другие данные");
    await($thread2);
    echo "getResult: " . $thread2->getResult() . "\n";
});

См. также