Javascript Chrome在特定计时窗口焦点丢失之前调用超时
下面是一些代码,它使用Javascript Chrome在特定计时窗口焦点丢失之前调用超时,javascript,google-chrome,settimeout,Javascript,Google Chrome,Settimeout,下面是一些代码,它使用setTimeout每秒运行一个函数,然后检查该函数是否调用得太早 var date = Date.now(); var ttl=1000, to = setTimeout(function loop () { console.log("triggered!"); if (Date.now() - date < ttl) console.error("Yes"); date = Date.n
setTimeout
每秒运行一个函数,然后检查该函数是否调用得太早
var date = Date.now();
var ttl=1000,
to = setTimeout(function loop () {
console.log("triggered!");
if (Date.now() - date < ttl)
console.error("Yes");
date = Date.now();
to = setTimeout(loop, ttl);
}, ttl);
var date=date.now();
变量ttl=1000,
to=设置超时(函数循环(){
log(“已触发!”);
如果(Date.now()-Date
console.error
调用不应出现。但是如果你在chrome上,点击Alt+Tab
的速度足够快,次数足够多,它有时会出现。我知道chrome在超时方面做了一些奇怪的事情,我想Javascript处理超时和间隔的方式有些问题。你应该检查多少还为时过早,然后在你的检查中添加一些“有效范围”(大约+/-5ms)。虽然+10ms是可以接受的,但-10ms不是。在执行代码之前,js调度程序将至少等待timeout
ms。所以可能javascript间隔没有错误,而是Date.now()的准确性?试试这个