Пульсация на форму рисования

Запросы AJAX могут не выполняться в том порядке, в котором они были запущены. Вместо прерывания вы можете игнорировать все ответы AJAX, за исключением последнего:

  • Создать счетчик
  • Увеличить счетчик, когда вы инициируете запрос AJAX
  • Используйте текущее значение счетчика для «отметки» запроса
  • . В обратном вызове успеха сравнивайте штамп со счетчиком, чтобы проверить, был ли он самым последним запросом

Грубая схема кода:

var xhrCount = 0;
function sendXHR() {
    // sequence number for the current invocation of function
    var seqNumber = ++xhrCount;
    $.post("/echo/json/", { delay: Math.floor(Math.random() * 5) }, function() {
        // this works because of the way closures work
        if (seqNumber === xhrCount) {
            console.log("Process the response");
        } else {
            console.log("Ignore the response");
        }
    });
}
sendXHR();
sendXHR();
sendXHR();
// AJAX requests complete in any order but only the last 
// one will trigger "Process the response" message

Демонстрация jsFiddle

16
задан user2511882 24 December 2015 в 22:37
поделиться