解决React / Promise时同步返回

时间:2014-02-02 22:36:13

标签: php reactphp

一旦React / 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引擎本身直接构造。然后回调将需要直接调用异步函数的生成器上的send来使其工作。

1 个答案:

答案 0 :(得分:1)

PHP缺少连续性和生成器委托,这使得从嵌套回调中调用yield成为可能,这使得目前完全无法实现。