Javascript退出子功能

时间:2013-06-06 14:50:47

标签: javascript function parent

我有一组bind,它在代码之前和之后的函数内部触发。如下:

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

    //... mainFunction code...

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

如果before();回调中的某个函数想要退出或停止global()进一步运行,我该怎样才能停止它而不检查返回值?

1 个答案:

答案 0 :(得分:1)

在不检查值return的情况下实现此目的的唯一方法是通过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