注意,是时间到了才加入队列,那么如果队列中已经有了其他的任务要执行,这个新加的定时器任务自然要等待前面的任务结束,所以时间会延后。
我们只能尽量调整延后的时间偏差,不能修正到完全精确,代码如下
// performance.now 比 Date.now 更精确
let startTime = performance.now()
// count表示定时器被调用的次数,次数需要是全局变量
let count = 0
function myTimeout(){
let runTime = performance.now()
// 先增加次数
++count
// diffTime 就是已经延后的时间
let diffTime = (runTime - (startTime + count * 1000))
// 既然已经延后了,就需要时间间隔,减去已经拖延的时间,提前开始
setTimeout(myTimeout, 1000 - diffTime)
}
let t = setTimeout(myTimeout , 1000)
js中setTimeout定时器不准的原因,以及修正的办法
可以用js控制最小化的浏览器窗口桔黄闪动提示新信息,控制title文字就行。具体如下://取title
var title = document.getElementsByTagName('title')[0]
//需要修改的时候,直接给innerHTML复制
var title.innerHTML = '这里在闪'。