Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从jquery中的另一个函数停止函数_Javascript_Jquery - Fatal编程技术网

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();无论你想在哪里检查是否允许。如果您想检查特定的低级功能,请将其放在那里。如果您只想检查一次,请将其放在顶级函数中的某个位置。