Javascript jQuery延迟对象集中式全局错误处理程序
延迟对象内部发生的错误会向控制台抛出警告,但不会在中引起注意:Javascript jQuery延迟对象集中式全局错误处理程序,javascript,jquery,jquery-deferred,Javascript,Jquery,Jquery Deferred,延迟对象内部发生的错误会向控制台抛出警告,但不会在中引起注意: window.addEventListener("error", function(e) { // Global handler }); 如何使集中式错误处理程序适用于所有错误,包括延迟对象 我正在使用最新的jQuery 3.3.1,但找不到工作解决方案。如果使用jQuery处理ajax请求,您可以执行以下操作: $(document).ajaxError(function(){ console
window.addEventListener("error", function(e) {
// Global handler
});
如何使集中式错误处理程序适用于所有错误,包括延迟对象
我正在使用最新的jQuery 3.3.1,但找不到工作解决方案。如果使用jQuery处理ajax请求,您可以执行以下操作:
$(document).ajaxError(function(){
console.log(arguments);
}
在读取(第3605行)之后,他们实际上已经实现了当延迟对象失败时调用的$.Deferred.exceptionHook
对于你的情况,你只需要像
$.Deferred.exceptionHook = function (err, stackTrace) {
// 'err' is what you throw in your deferred's catch.
window.dispatchEvent( new CustomEvent('error', {
detail: err
}) );
}
这里有一些简单的例子
$.Deferred.exceptionHook=函数(err,stackTrace){
//“err”是你在你的延迟捕获物中抛出的东西。
$(“#错误消息”).text(err);
}
美元。什么时候(
$.ajax(”https://example.com“”//这应该失败,因为沙盒也是如此。
).then(函数successFn(){
警惕(“不可能的事情正在发生”);
},功能失效fn(){
抛出“一个不错的错误”;
});代码>
你是我的英雄@乔纳斯,你知道,我找不到这方面的任何相关文档。在使用这种方法之前,您可能需要考虑两次,因为这可能会在将来改变。但在我看来,这应该适用于你当前的版本。与exceptionHook@MaorRefaeli相关的罚单,它不是重复的