У меня есть переменная "cart" на стороне сервера, которая обновляется посредством вызова AJAX при нажатии кнопки (я использую Shopify, если это имеет значение, но я чувствую, что это общий вопрос).Я использую AJAX для перезагрузки div
после изменения корзины.Проблема, с которой я столкнулся, заключалась в следующем:
- Я отправляю вызов AJAX «корзины обновлений»
- Сразу после попытки перезагрузить div
- В зависимости от точного временивозможно, 1 из каждых 10 раз при перезагрузке использовались бы старые данные корзины, поскольку изменение корзины еще не было зарегистрировано на сервере.
Я нашел решение использовать setInterval
, но я думаю, что есть некоторые серьезные проблемы с этим методом.Сначала я покажу код, а затем поделюсь своими опасениями.
function addToCart(prodid,prodHandle,sizeString){
var oldSpaces = getNumSpaces(); //gets the number of "free spaces" to display
//the actual call to update the cart
push_to_queue(prodid, 1, {}, Shopify.moveAlong);
//now wait for the number of items to change (ignore the possibility of cart update
//failure, that's handled elsewhere)
var timerVar = setInterval(function(){
var newSpaces = getNumSpaces();
if(newSpaces != oldSpaces)
{
$( document ).ready(function() {
$("#toybox").load(" #toybox > *");
clearInterval(timerVar);
});
}
},200);
};
Я обеспокоен тем, что это выглядит как крайне хакерским.Я запускаю функцию обновления один раз каждые 200 мс.Есть ли способ (как правило, желательно, но только в случае покупки, если это необходимо) попросить сам сервер сообщить мне, когда что-то изменилось?