1

我有一组绑定,它们在代码之前和之后在函数内部触发。如下所示:

function global() {
    before(); // call all before binds here

    //... mainFunction code...

    after(); // call all after binds here 
}

如果回调中的一个函数before();想要退出或停止global()进一步运行,我如何在不检查返回值的情况下停止它?

4

1 回答 1

1

return在不检查值ed 的情况下实现此目的的唯一方法是throw通过设置error来引发异常。

function before() {
    throw new Error('Ending execution');
}
function after() {
    console.log('Have you met Ted?');
}
function global() {
    before();
    // never reaches here
    after();
}
global(); // Error: Ending execution
console.log('foo'); // not executed

如果您在global某处调用并希望在调用之后的任何代码继续执行,则需要用 包装它try..catch,例如

function global() {
    try {
        before();
        // never reaches here
        after();
    } catch (e) {
        console.log(e); // log error. Leave this block empty for no action
    }
}
global(); // Error logged
console.log('bar'); // still executed
于 2013-06-06T14:54:59.440 回答