1

一旦解决了 React/Promise,我需要从函数调用中返回。基本思想是从异步调用中伪造同步调用。这意味着一旦 promise 被解决或拒绝,外部函数必须返回一个值。

这是使用 React/Mysql 为 RedBeanPHP 创建一个驱动程序。我知道这可能会导致 React 事件循环中的 CPU 不足。

我最初的想法是使用生成器,然后在\React\Promise\Deferred::then回调中调用 yield。

function synchronous()
{
    $result = asynchronous();
}

function asynchronous()
{
    $deferred = new \React\Promise\Deferred;

    $sleep = function() use ($deferred)
    {
        sleep(5);
        $deferred->resolve(true);
    };

    $deferred->then(function($ret) {
        yield $ret;
    });

    $sleep();
}

PHP 生成器类 AFAICT 只能由 PHP 引擎本身直接构造。then 回调需要在异步函数的生成器上直接调用 send 才能正常工作。

4

1 回答 1

1

PHP 缺少延续和生成器委托,这使得从嵌套回调内部调用 yield 成为可能,这使得目前完全不可能实现。

于 2014-02-02T23:49:02.700 回答