Добрый день.
Есть 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);
}
});
});
Отрабатывает нормально.
Как сделать чтобы функция отрабатывалась только последний раз?