先来看这样一段代码:
function update() {
loadData().then(function(data) {
$('#content').html(data.content);
var delay = data.nextUpdateTime - new Date();
if (delay > 0) {
setTimeout(update, delay);
}
});
}
其流程非常简单:通过AJAX加载数据后更新HTML的内容;如果有指定下次更新时间,则通过计时器在该时间点再执行一次整个流程。
要说这段代码有什么隐患的话,那就是data.nextUpdateTime与当前时间的时间差(即delay变量的值)比较小的时候,会导致内容频繁更新。但这是属于正常的业务逻辑,要优化就只能牺牲内容更新的即时性。然而这里我要说的是,当时间差非常大的时候,也会出现同样的问题。