Для тех, кто наткнулся на это и нуждается в конкретном примере кода, вот вам.
У меня была та же проблема, и решение состояло в том, чтобы повторно использовать объект XMLHttpRequest, чтобы гарантировать, что любой предыдущий запрос был отменен перед инициацией нового. Это не сработает, если вы хотите, чтобы несколько запросов AJAX летали, но в моем случае запуск нового запроса означал, что последний запрос больше не нужен.
Все запросы на моей странице проходили через один и тот же метод-оболочку XMLHttpRequest, который выглядел так:
//Declare the XMLHttpRequest object to be re-used
var global_xHttpRequest = null;
function xmlHttpHandler(type, params, complete, postData) {
//Prevents an issue where previous requests get stuck and new ones then fail
if (global_xHttpRequest == null) {
global_xHttpRequest = new XMLHttpRequest();
} else {
global_xHttpRequest.abort();
}
//Parse out current URL
var baseURL = window.location.host;
var svc = "https://" + baseURL + "/processAction?";
var url = svc + params;
global_xHttpRequest.open(type, url, true);
//Add the callback
global_xHttpRequest.onreadystatechange = complete;
global_xHttpRequest.send(postData);
}
Что можно использовать так:
xmlHttpHandler("GET", params, completeFnc);