这篇文章主要为大家详细介绍了JS setTimeout/setInterval最大延时值的问题解决方法,具有一定的参考价值,可以用来参考一下。
感兴趣的小伙伴,下面一起跟随四海网的小编罗X来看看吧。
/**
* @param
* @arrange (512.笔记) www.q1010.com
**/
function update() {
loadData().then(function(data) {
$('#content').html(data.content);
var delay = data.nextUpdateTime - new Date();
if (delay > 0) {
setTimeout(update, delay);
}
});
}
其流程非常简单:通过AJAX加载数据后更新HTML的内容;如果有指定下次更新时间,则通过计时器在该时间点再执行一次整个流程。
/**
* @param
* @arrange (512.笔记) www.q1010.com
**/
function log() {
console.log('executed');
}
var nextUpdateTime = new Date();
// 设为一个月后
nextUpdateTime.setMonth(nextUpdateTime.getMonth() + 1);
var delay = nextUpdateTime - new Date();
setTimeout(log, delay);
这段代码的原意是让log函数在一个月后执行,但是运行一下就可以发现,该函数会马上执行。为什么会这样呢?
/**
* @param
* @arrange (512.笔记) www.q1010.com
**/
function update() {
loadData().then(function(data) {
$('#content').html(data.content);
var delay = data.nextUpdateTime - new Date();
if (delay > 0) {
// 限制最大延时值为一天
var ONE_DAY = 24 * 60 * 60 * 1000;
if (delay > ONE_DAY) {
setTimeout(function() {
window.location.reload();
}, ONE_DAY);
} else {
setTimeout(update, delay);
}
}
});
}
同样的问题也存在于setInterval中。这也算是Javascript中一个比较隐蔽的坑了。
本文来自:http://www.q1010.com/174/1657-0.html
注:关于JS setTimeout/setInterval最大延时值的问题解决方法的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:setTimeout,setInterval
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。