【发布时间】:2011-03-07 00:26:45
【问题描述】:
我有一个非常简单的 JS 计数器,它显示在类似屏幕的仪表板上,它执行以下操作:
- 它每 5 分钟进行一次 jsonp 调用并检索“总”数
- 然后它通过增加最后显示的总数直到等于新的总数,将这个数字显示在屏幕上。 (数量只会不断增加)
我在平稳地增加数字时遇到了一些麻烦。我想做的是找到一个增量(即新总数 - 旧总数)并在 5 分钟内逐渐增加数字,直到下一次通话,这样看起来就像一个很好的平滑过渡。
关于如何做到这一点的任何想法?
目前我的一些代码看起来像这样(这个块每 5 分钟调用一次。是的,它急需重构......)
var LAST_NUMBER_OF_SESSIONS = null;
var five_minutes_in_seconds = 300;
var new_number_of_sessions;
$.getJSON('http://blah.com/live_stats/default_jsonp.aspx?callback=?', function(data) {
if(LAST_NUMBER_OF_SESSIONS === null){
LAST_NUMBER_OF_SESSIONS = data.total_sessions;
}
new_number_of_sessions = data.total_sessions;
var delta = Math.floor(new_number_of_sessions - LAST_NUMBER_OF_SESSIONS);
var time_interval = (five_minutes_in_seconds / delta) * 1000;
var old_value = LAST_NUMBER_OF_SESSIONS;
var new_value = null;
sessions_interval = setInterval(function (){
new_value = parseInt(old_value, 10) + 1;
$('#stats').text(new_value);
old_value = new_value;
if(new_value >= new_number_of_sessions){
clearInterval(sessions_interval);
}
}, time_interval);
LAST_NUMBER_OF_SESSIONS = new_value;
});
}
这段代码似乎在 5 分钟开始时非常快地增加数字,然后停止,所以它不完全正确......
【问题讨论】:
标签: javascript jquery