终止Javascript而不出现错误/异常

Terminate Javascript without error / exception

本文关键字:错误 异常 Javascript 终止      更新时间:2023-09-26

我需要终止函数中的javascript,这样它就不会执行脚本调用的下一个代码块和其他函数,该脚本遵循当前函数。

我在SO中发现了这个现有的问题:如何在Javascript中终止脚本,其中给出了触发错误/异常的解决方案,该错误/异常将立即终止脚本。

但我的情况不同,因为,如果当前函数没有停止脚本的执行,我终止脚本的目的是防止下一个函数出现错误。所以,触发另一个错误来防止错误并不能解决我的目的!

那么,有没有其他方法可以终止javascript而不是抛出错误/异常呢?

在标记为重复之前,请仔细阅读我的问题,我已经解释了为什么它不能解决我提到的问题

因为您在函数内部,所以只需要return

如果你的问题没有执行"脚本调用的其他函数",你应该返回一个布尔值。例如,如果不希望调用rest,则返回false,然后将剩余语句包装在if:中

function Foo() {
    if (weAreInLotsOfTrouble) {
        return false;
    }
    return true;
}
DoSomething();
DoSomethingElse();
if (Foo()) {
    DoSomethingDangerous();
}

尝试使用参数为"stopOnFalse"jQuery.Callbacks()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>