@tester_toster

Как отменить выполнение функции js?

Добрый день.
Есть ajax корзина.
При ее изменении происходит запрос на сервер и после получения ответа она рендерится заново.
Происходит это так:
var re = false;

jQuery('elem').click(function(e){
   if (re) {
      clearTimeout(re);
   }

   jQuery.AJAX({
     url: '',
     success: function(r){
        re = setTimeout(function() {
            return renderCart(r);
        }, 500);
     }
   });
});

Но при двух действиях - прорисовка все равно происходит два раза.

Пробовал и так:
var re = false;

jQuery('elem').click(function(e){
   jQuery.AJAX({
     url: '',
     success: function(r){
        renderCart(r)
     }
   });
});

function renderCart(r){
   if (re) {
      clearTimeout(re);
   }
  re = setTimeout(function() {
            // Код рендера
        }, 500);
}

и так:
var re = false;

jQuery('elem').click(function(e){
   if (re) {
      clearTimeout(re);
   }

   jQuery.AJAX({
     url: '',
     success: function(r){
        re = setTimeout(renderCart(r), 500);
     }
   });
});

и так:
var re = false;

jQuery('elem').click(function(e){
   if (re) {
      clearTimeout(re);
   }

   jQuery.AJAX({
     url: '',
     success: function(r){
        re = setTimeout(function() {
             renderCart(r);
        }, 500);
     }
   });
});

Результат один и тот-же все прорисовывается несколько раз, но если сделать:
var re = false;

jQuery('elem').click(function(e){
   if (re) {
      clearTimeout(re);
   }

   jQuery.AJAX({
     url: '',
     success: function(r){
        re = setTimeout(function() {
            return alert();
        }, 500);
     }
   });
});

Отрабатывает нормально.
Как сделать чтобы функция отрабатывалась только последний раз?
  • Вопрос задан
  • 461 просмотр
Пригласить эксперта
Ответы на вопрос 1
@LiguidCool
Вроде можно функцию присвоить переменной и в случае чего - очистить.
Типа reg = JQuery. AJAX...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы