jQuery Ajax全局处理程序的延迟实现

时间:2016-02-05 15:41:09

标签: jquery ajax events javascript-events promise

根据jQuery文档,必须使用文档上的回调函数实现global Ajax event handlers。否则,本地$.ajax()会使用promises实现事件。

有没有办法使用promises方法处理全局Ajax事件,如.done().fail().always().then()

我正在寻找一种方法来为不依赖// current way of doing this: // $(document).ajaxSuccess(_handleAjaxSuccess); // // some ideas of what it could look like: // $.ajaxSuccess(_handleAjaxSuccess); // $.ajax.done(_handleAjaxSuccess); // $.ajaxSetup({ done: _handleAjaxSuccess }); 的全局ajax事件声明事件处理程序,例如:

select * into #a from(
select 1 prod,1 id union all
select 1,2 union all
select 1,5 )a

select * into #b from(
select 1 id,31 cat union all
select 1,39 union all
select 1,55 union all
select 2,61 union all
select 2,62 union all
select 5,98 union all
select 5,99  ) b


select * from #a a inner join #b b on a.id=b.id

2 个答案:

答案 0 :(得分:1)

不,您无法使用promises方法.done().fail().always().then()来处理全局Ajax事件。

这些是Promise方法,因此Promise需要在它们可用之前存在。

根据定义,jQuery的全局ajax事件处理程序在定义它们时不会附加到任何特定的Promise。相反,它们由jQuery存储,并在每次某些ajax事件发生时在内部调用。

作为jQuery的用户,我们不必担心这些内部调用是如何进行的,但我们可以非常确定方法中的一个或另一个.done().fail(),{涉及{1}}和.always()

如果你想了解更多,你可以深入研究jQuery源代码,但我怀疑额外的理解是否特别有价值。

答案 1 :(得分:0)

尽管jqXHR个实例支持promises接口,但jquery上的全局Ajax事件不支持它,目前还没有计划实现它(jquery forum)。