Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery延迟对象集中式全局错误处理程序_Javascript_Jquery_Jquery Deferred - Fatal编程技术网

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相关的罚单,它不是重复的