我有一组bind,它在代码之前和之后的函数内部触发。如下:
function global() {
before(); // call all before binds here
//... mainFunction code...
after(); // call all after binds here
}
如果before();
回调中的某个函数想要退出或停止global()
进一步运行,我该怎样才能停止它而不检查返回值?
答案 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