是否有可能以某种方式停止或终止JavaScript,以防止任何进一步的基于JavaScript的执行发生,而无需重新加载浏览器?
我正在考虑在PHP中等价于exit()的JavaScript。
是否有可能以某种方式停止或终止JavaScript,以防止任何进一步的基于JavaScript的执行发生,而无需重新加载浏览器?
我正在考虑在PHP中等价于exit()的JavaScript。
当前回答
No.
即使抛出异常,也只会终止当前的事件循环。传递给setTimeout或DOM/XMLHttpRequest事件处理程序的回调在时间到来时仍将运行。
其他回答
我做的事:
setTimeout(function() { debugger; }, 5000)
这样我就有5秒钟的时间与UI交互,然后停止。最后一次我使用的是当我需要离开自定义工具提示可见,做一些样式变化。
No.
即使抛出异常,也只会终止当前的事件循环。传递给setTimeout或DOM/XMLHttpRequest事件处理程序的回调在时间到来时仍将运行。
我在用
返回错误;
如果我想中止JavaScript从进一步向下运行。
我知道这很老了,但我想这么做,我发现了,在我看来,一个稍微改进的投掷答案的解。只是暂时抑制错误消息,然后使用setTimeout重新激活它们:
setTimeout(function() {
window.onerror = function(message, url, lineNumber) {
return false;
};
}, 50); // sets a slight delay and then restores normal error reporting
window.onerror = function(message, url, lineNumber) {
return true;
};
throw new Error('controlledError');
简短的回答:
throw new Error("Something went badly wrong!");
如果你想知道更多,请继续阅读。
要停止JavaScript的执行以进行开发/调试吗?
表达式调试器;在您的代码中,将暂停页面执行,然后您的浏览器的开发人员工具将允许您查看页面冻结时的状态。
您是否希望按照设计任意地停止应用程序?
错误吗?
不要试图停止所有事情,而是让您的代码处理错误。通过谷歌阅读异常。它们是一种让代码“跳转”到错误处理过程的聪明方法,而无需使用繁琐的if/else块。
在阅读了它们之后,如果你认为中断整个代码绝对是唯一的选择,抛出一个除了应用程序的“根”作用域之外不会被“捕获”的异常是解决方案:
// creates a new exception type:
function FatalError(){ Error.apply(this, arguments); this.name = "FatalError"; }
FatalError.prototype = Object.create(Error.prototype);
// and then, use this to trigger the error:
throw new FatalError("Something went badly wrong!");
确保没有catch()块捕获任何异常;在这种情况下,修改它们以重新抛出“FatalError”异常:
catch(exc){ if(exc instanceof FatalError) throw exc; else /* current code here */ }
当任务完成或任意事件发生时?
返回;将终止当前函数的执行流。
if(someEventHappened) return; // Will prevent subsequent code from being executed
alert("This alert will never be shown.");
注意:返回;只在函数内工作。
在这两种情况下……
...您可能还想知道如何停止异步代码。它是用clearTimeout和clearInterval完成的。最后,要停止XHR (Ajax)请求,可以使用xhrObj.abort()方法(在jQuery中也可用)。