Skip to content
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;
});