diff --git a/await-generator/src/SOFe/AwaitGenerator/Await.php b/await-generator/src/SOFe/AwaitGenerator/Await.php index b1fdd3b..c156eac 100644 --- a/await-generator/src/SOFe/AwaitGenerator/Await.php +++ b/await-generator/src/SOFe/AwaitGenerator/Await.php @@ -82,9 +82,30 @@ class Await extends PromiseState{ protected final function __construct(){ } + /** + * Executes a generator in the background. + * + * @param Closure|Generator $generator + * @phpstan-param Generator|Closure(): Generator $generator + */ + public static function run(Closure|Generator $generator) : void{ + if($generator instanceof Closure) { + $generator = $generator(); + } + + /** @var Await $await */ + $await = new Await(); + $await->generator = $generator; + $await->onComplete = null; + + $await->wakeupFlat(fn() => $generator->rewind()); + } + /** * Converts a `Function` to a VoidCallback * + * @deprecated Use `Await::run` instead. + * * @param callable $closure * @phpstan-param callable(): Generator $closure * @param callable|null $onComplete @@ -101,6 +122,8 @@ public static function f2c(callable $closure, ?callable $onComplete = null, $cat /** * Converts an AwaitGenerator to a VoidCallback * + * @deprecated Use `Await::run` instead. + * * @param Generator $generator * @phpstan-param Generator $generator * @param callable|null $onComplete