Javascript 从jquery中的另一个函数停止函数
假设我有下面的函数Javascript 从jquery中的另一个函数停止函数,javascript,jquery,Javascript,Jquery,假设我有下面的函数 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"); } 所以basicali,showMEVal()方法将首先
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");
}
所以basicali,showMEVal()方法将首先检查是否允许进一步执行,如果允许,将继续执行,否则将退出
这是数字的常见功能,需要首先检查是否应继续
我不想显式地处理checkToAllow()方法返回的值,比如
function showMEVal(){
if(checkToAllow() == true)
console.log("I am here because I am allowed");
}
我正在考虑使用event.stopImmediatePropagation()但它似乎不起作用
请告知
谢谢处理此问题的正常方法是在子函数中抛出异常。您可以在W3S阅读JavaScript中异常处理的简要说明,如下: 因此,作为您的示例,您应该:
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");
}
这很有用,因为您只需使用try。。。捕获…
在JavaScript的最高层构造,并且只捕获一次。然后,在您的处理过程中,您只需:
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!")
}
你也可以抛出从checkToAllow到Allow的任何东西,如果没有其他东西捕捉到这个错误,它会作为一个JavaScript错误传播,并停止剩下的处理。。。但这显然不是最佳实践,因为没有人希望页面中出现JavaScript错误 是的,我看到了那篇帖子,请看一看标记为应答的帖子
函数showMEVal(){if(!checkToAllow())return;console.log(“我在这里是因为我被允许”);}
似乎没有人对完整阅读问题感兴趣,我得到的答案是我在问题中标记的不适合我的场景的答案。我从一个半途而废的答案开始,然后详细阐述。不完全正确,但可能最好在这里使用checkToAllow();在我使用checkToAllow()时看到的每种方法中都有try-catch;如果不使用try-catch,它只会在控制台中抛出错误,但似乎解决了问题,不是吗?使用checkToAllow();无论你想在哪里检查是否允许。如果您想检查特定的低级功能,请将其放在那里。如果您只想检查一次,请将其放在顶级函数中的某个位置。