码迷,mamicode.com
首页 > 其他好文 > 详细

定时器引发的思考

时间:2019-12-11 21:14:35      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:图片   doc   font   ntb   测试   接受   click   原因   mic   

定时器真是定时执行吗?

定时器是如何实现的?

做个测试

document.getElementById(‘btn‘).onclick = function () {
    var start = Date.now()
    console.log(‘启动定时器前...‘)
    setTimeout(function () {
      console.log(‘定时器执行了‘, Date.now()-start)
    }, 200)
    console.log(‘启动定时器后...‘)
  }

结果是:

技术图片

定时器并不能保证真正定时执行
一般会延迟一丁点(可以接受), 也有可能延迟很长时间(不能接受),像下面这种情况,加个for循环
document.getElementById(‘btn‘).onclick = function () {
    var start = Date.now()
    console.log(‘启动定时器前...‘)
    setTimeout(function () {
      console.log(‘定时器执行了‘, Date.now()-start)
    }, 200)
    console.log(‘启动定时器后...‘)

    // 做一个长时间的工作
    for (var i = 0; i < 1000000000; i++) { //加了这个延时时间更长的原因是事件循环机制决定的,

    }
  }

技术图片

 

 因为for循环是同步代码,执行完了才会执行 setTimeout函数。

所以定时器是如何实现的就有了答案,事件循环机制

 

定时器引发的思考

标签:图片   doc   font   ntb   测试   接受   click   原因   mic   

原文地址:https://www.cnblogs.com/lyt0207/p/12024981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!