我正在使用一个工具来检索jQuery事件keypress中数据库中的地址。当文本输入失去焦点时,我取消每个挂起的请求,以避免在用户完成输入后出现下拉菜单。一切都可以正常工作,但是最后我发送了一个最终的ajax请求来进行我的表单的下一步。这个请求比之前取消所有这些请求要慢得多。我不明白为什么,取消的请求不应该影响待处理的请求(我确定它们已经被取消,在chrome工具中的网络选项卡中查看)。我使用的是这段代码:
jQuery.xhrPool = [];
jQuery.xhrPool.abortAll = function() {
jQuery(this).each(function(idx, jqXHR) {
jqXHR.abort();
jQuery('.loader').hide();
});
};
jQuery.ajaxSetup({
beforeSend: function(jqXHR) {
jQuery.xhrPool.push(jqXHR);
},
complete: function(jqXHR) {
var index = jQuery.xhrPool.indexOf(jqXHR);
if (index > -1) {
jQuery.xhrPool.splice(index, 1);
}
}
});
jQuery('#my_input').blur(function(){
jQuery.xhrPool.abortAll();
});
我猜有一种优化技巧我不理解。
感谢您的帮助。