我收到此错误代码:
PHP警告:get_class()期望参数1为对象,字符串 在第90行的/phalcon/vendor/clue/block-react/src/functions.php中给出 PHP致命错误:未捕获UnexpectedValueException:承诺被拒绝 具有意外的输入值 /phalcon/vendor/clue/block-react/src/functions.php:89堆栈跟踪:
- 0 /phalcon/vendor/clue/block-react/src/functions.php(198):线索\反应\块\等待(NULL,对象(反应\ EventLoop \ StreamSelectLoop), NULL)
- 1 /phalcon/app/tasks/RunTask.php(96):线索\反应\块\ awaitAll(NULL,对象(反应\ EventLoop \ StreamSelectLoop))
我正在用以下代码建立承诺:
$promises[] = $this->getTrades($rule->id, $exchange->id)
->then(
function ($trades) use ($handleTrades) {
foreach ($trades as $trade) {
$handleTrades[] = $trade;
}
}
);
函数是这样的:
private function getTrades($rule, $exchange) {
$deferred = new React\Promise\Deferred();
//...
if (empty($trades->count())) {
$deferred->reject("No trades found for rule $rule");
} else {
$deferred->resolve($trades);
}
return $deferred->promise();
}
我该如何解决?
答案 0 :(得分:1)
真正的原因是Fatal error: Uncaught UnexpectedValueException
,而不是警告。由于you can see clue/reactphp-block
库在Exception
函数中期望有reject
。试试:
$deferred->reject(new \Exception("No trades found for rule $rule"));
答案 1 :(得分:0)
正如上面提到的Furgas所述,我需要在promise中添加错误处理功能。