一旦解决了 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 才能正常工作。