我需要从函数中终止javascript,这样它就不会执行下一个代码块和脚本调用的其他函数,这些函数跟在当前函数之后。
我在SO中找到了这个现有问题:How to terminate the script in Javascript,其中给出的解决方案是触发错误/异常,这将立即终止脚本。
但是我的情况有所不同,因为我终止脚本的目的是防止来自下一个函数的错误,如果当前函数没有停止执行脚本的话。因此,触发另一个错误以防止错误无法解决我的目的!
那么,有没有其他方法来终止javascript而不是抛出错误/异常?
请在标记为重复之前正确阅读我的问题,我已经解释了为什么它不能解决我提到的问题的问题!。
答案 0 :(得分:5)
由于您在某个功能中,只需return
。
进一步阅读你的问题,它没有执行"脚本调用的其他函数",你应该返回一个布尔值。例如,如果您不希望其余的被调用,则返回false,然后将其余语句包装在if:
中function Foo() {
if (weAreInLotsOfTrouble) {
return false;
}
return true;
}
DoSomething();
DoSomethingElse();
if (Foo()) {
DoSomethingDangerous();
}
答案 1 :(得分:0)
尝试将jQuery.Callbacks()
与参数"stopOnFalse"
一起使用; jQuery.when()
,jQuery .then()
var callbacks = $.Callbacks("stopOnFalse");
function a(msg) {
var msg = msg || "a";
console.log(msg);
return msg
}
// stop callbacks here
function b() {
var msg = false;
console.log(msg)
return msg
}
// `c` should not be called
function c() {
var msg = new Error("def");
console.log(msg)
return msg
}
callbacks.add(a,b,c);
$.when(callbacks.fire())
.then(function(cb) {
// `c` : `Error`
if (cb.has(c)) {
console.log("callbacks has `c`"
, cb.has(c));
// remove `c`
cb.remove(c);
console.log(cb.has(c));
// empty `callbacks`
cb.empty();
// do other stuff
cb.add(a);
cb.fire("complete")
}
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>