js定时器每秒执行一次,为啥时间会不准?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js定时器每秒执行一次,为啥时间会不准?相关的知识,希望对你有一定的参考价值。

js定时器每秒执行一次,为什么时间会不准?

js是单线程的,主线程之外有个任务队列用来放异步任务,定时器就是异步的操作,定时器设置的时间,是指在1000毫秒后,可以调用回调函数得到异步操作的结果,但是必须保证主线程中的同步任务已经全部执行完毕,如果主线程还有同步任务在执行,即使1000毫秒到了,也不会去读取异步的任务队列,就是说,这个定时器等待的最短时间是1000毫秒。 参考技术A 一看楼下就不会 还瞎bb 还西安天融信教育 真辣鸡 js定时器是不准确的 为什么 因为js是无阻塞架构 所有代码存在一个排队问题 最简单的测试就是 定时器0不是真的立即执行 必须等待整个代码块结束才排序的执行 所以系统时间到达定时器指定时间的时候 不一定正好排到你js的代码 js很难写出一个精准时钟 为什么要怎么设计 这种设计使得js无比强大的异步机制和I/O并非能力 在处理高并发的情况时 无论多少人同时请求也不会因为线程锁死 而丢失响应本回答被提问者采纳 参考技术B 这个肯定是准确的。而你打印的是获取的是当前点击开始运行的时间,和定时器对应的时间是不一样的。

JS 定时器


定时器:
window.setTimeout(function(){},间隔时间毫秒);
- 定时炸弹,延迟执行,只执行一次

window.setInterval(function(){},间隔的时间毫秒);
- 无限循环,每一次循环有间隔时间,一般不要小于20毫秒
- 它是有返回值的,可以用一个变量来接收这个定时器对象

window.clearInterval(要关闭的定时器对象);
一旦执行这句代码,会立刻停止此定时器对象的执行

对象.offset+样式   这里是代表的是当前给宽度

例如:

 







以上是关于js定时器每秒执行一次,为啥时间会不准?的主要内容,如果未能解决你的问题,请参考以下文章

jq刷新页面会定时器会清除么

如何创建一个简单的计时器,使用setInterval每秒执行一次有趣的事情?

JS 定时器

js函数节流

js节流和防抖

js清除定时器