我们说我有以下功能
var isallow = false;
function checkToAllow(){
if(isallow == false)
// stop execution of calling method( parent method)
}
function showMEVal(){
checkToAllow();
console.log("I am here because I am allowed");
}
所以基本上,showMEVal()方法将首先检查是否允许进一步执行,如果允许则继续执行,否则它将退出。
这是一个函数的通用功能,需要首先检查它是否应该继续。
我不想明确使用checkToAllow()方法返回的值,比如
function showMEVal(){
if(checkToAllow() == true)
console.log("I am here because I am allowed");
}
我正在考虑使用 event.stopImmediatePropagation(); ,但它似乎不起作用。
请告知
由于
答案 0 :(得分:2)
处理此问题的常用方法是在子函数中抛出异常。您可以在w3schools阅读JavaScript中的异常处理的简要说明,在这里:http://www.w3schools.com/js/js_errors.asp。
所以对于你的例子,你有:
var isallow = false;
function checkToAllow() {
if(isallow == false)
throw CustomAbort(); // Can be anything: object or basic data type
}
function showMEVal(){
try{
checkToAllow();
}
catch (err) {
return;
}
console.log("I am here because I am allowed");
}
这有用的原因是您只需要在JavaScript的最高级别拥有try... catch...
构造,并且只需要一次。然后,在您的处理过程中,您可以简单地拥有:
function deepFunction() {
checkToAllow();
console.log("I am here because I am allowed.");
console.log("I'm not sure what happens if I'm not allowed, because it's taken care of by checkToAllow(), and by the top level error handling!")
}
你可能只是throw
来自checkToAllow的任何内容,并且没有其他任何东西正在捕获该错误,它将作为JavaScript错误一直传播并停止其余的处理...但是&#39 ; s显然不是最佳实践,因为没有人想在他们的页面中出现JavaScript错误!