Methods Selection
Neuron Teckid edited this page Dec 29, 2015
·
2 revisions
方法挑选指的是在不同上下文环境中, 以不同语义来编译相同语法的语句, 最终生成不同代码的过程.
通常会被直译为返回语句, 以下情况例外
a. 其所在函数为正规异步函数时, 编译为形如
return $callback(null, RETURN_VALUE);
的语句, 其中 $callback
为该正规异步调用的回调形参.
b. 管道语句中
同与管道语句所在上下文.
通常会被直译为异常抛出语句, 以下情况例外
a. 其所在函数为正规异步函数, 编译为形如
return $callback(THROW_VALUE);
的语句, 其中 $callback
为该正规异步调用的回调形参.
在编译正规异步调用, 如
f('arg', %%)
会在回调函数中产生分支语句用于容错, 可能产生如下形式
a. 其所在语句的直接父节点为正规异步函数时, 编译输出等价于 (其中 $callback
为正规异步调用的回调形参)
f('arg', function($error, $result) {
if ($error)
return $callback($error);
$result;
});
b. 其它情况, 编译输出等价于
f('arg', function($error, $result) {
if ($error)
throw $error;
$result;
});