Tôi hiện đang sử dụng một công cụ để truy xuất địa chỉ trong cơ sở dữ liệu trên nhấn phím sự kiện jQuery. Khi đầu vào văn bản mất tiêu điểm, tôi hủy mọi yêu cầu đang chờ xử lý để tránh trình đơn thả xuống xuất hiện sau khi người dùng hoàn tất để điền thông tin vào. Mọi thứ hoạt động chính xác, nhưng, để hoàn thành, tôi gửi yêu cầu ajax cuối cùng để chuyển sang bước tiếp theo của biểu mẫu của tôi. Yêu cầu này thực sự chậm hơn nhiều so với trước khi tôi hủy tất cả các yêu cầu này. Tôi không hiểu tại sao, yêu cầu bị hủy không ảnh hưởng đến yêu cầu đang chờ xử lý (và tôi chắc chắn rằng chúng bị hủy, tìm kiếm trong tab mạng trong công cụ chrome). Tôi đang sử dụng mã này:Yêu cầu jQuery ajax bị hủy làm chậm yêu cầu hiện tại
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();
});
Tôi đoán có một mẹo tối ưu hóa mà tôi không nhận được. Cảm ơn sự giúp đỡ của bạn.
Nếu bạn không hủy chúng, sự chậm trễ vẫn còn đó? –
Nó chậm hơn nhiều so với khi tôi hủy chúng. – M4nch4k
Và điều gì sẽ xảy ra nếu bạn gửi yêu cầu đó mà không gửi bất kỳ yêu cầu nào trước đây mà bạn đang hủy ngay từ đầu? Tôi nghi ngờ các yêu cầu bị hủy không có gì liên quan đến việc bạn gặp phải vấn đề trong bao lâu. –