一旦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来使其工作。
答案 0 :(得分:1)
PHP缺少连续性和生成器委托,这使得从嵌套回调中调用yield成为可能,这使得目前完全无法实现。