终止Javascript没有错误/异常

时间:2016-01-12 04:11:34

标签: javascript exit

我需要从函数中终止javascript,这样它就不会执行下一个代码块和脚本调用的其他函数,这些函数跟在当前函数之后。

我在SO中找到了这个现有问题:How to terminate the script in Javascript,其中给出的解决方案是触发错误/异常,这将立即终止脚本。

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

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

  

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

2 个答案:

答案 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>