У меня есть элемент на моей странице, который я хотел бы время от времени увеличивать:
<p class="count">28</p>
В моем javascript у меня есть интервал, который запускается каждые 5 секунд и асинхронно получает новый (более высокий) номер с сервера. Это работает примерно так же, как счетчик.
setInterval(function(){
$.post("getcount.php", function(num){
latestNum = num;
});
}, 5000);
Если асинхронный запрос выводит число 56, я бы хотел, чтобы текст абзаца изменился с 28 на 56, показывая многие (или большинство) или промежуточные звенья по мере его увеличения. Сейчас я устанавливаю другой интервал для постоянной проверки текста абзаца и локальной переменной. Если текст абзаца меньше значения переменной, он увеличивает его на 1. Он делает это каждые полсекунды.
setInterval(function(){
currNum = Number( $(".count").text() );
if (currNum < latestNum)
$(".count").text( currNum + 1 );
}, 50);
Мой вопрос заключается в следующем: есть ли лучший способ сделать это без постоянного запуска интервала? Можно ли вызвать это анимированное приращение из ответа на асинхронный запрос, а затем остановить его, как только два числа сойдутся в значении? Я также должен отметить, что существует вероятность того, что следующий запрос будет выполнен до того, как два числа будут согласованы по значению.
Как коллектив вы сделал бы это?