Scope::spawn

(PHP 8.6+, True Async 1.0)

public function spawn(\Closure $callable, mixed ...$params): Coroutine

Запускает новую корутину в рамках данного scope. Корутина будет привязана к scope и будет управляться его жизненным циклом: при отмене или закрытии scope все его корутины также будут затронуты.

Параметры

callable — замыкание, которое будет выполнено как корутина.

params — аргументы, передаваемые в замыкание.

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

Coroutine — объект запущенной корутины.

Примеры

Пример #1 Базовое использование

<?php

use Async\Scope;

$scope = new Scope();

$coroutine = $scope->spawn(function() {
    echo "Привет из корутины!\n";
    return 42;
});

echo $coroutine->getResult(); // 42

Пример #2 Передача параметров

<?php

use Async\Scope;

$scope = new Scope();

$coroutine = $scope->spawn(function(string $url, int $timeout) {
    echo "Загрузка $url с таймаутом {$timeout}мс\n";
    // ... выполнение запроса
}, 'https://example.com', 5000);

$scope->awaitCompletion();

См. также