定时器真是定时执行的吗?

定时器真是定时执行的吗?

定时器并不能保证真正定时执行

  • 一般会延迟一丁点(可以接受)
  • 也有可能延迟很长时间(不能接受)

那么什么情况可以接受,什么情况下不能接受呢?

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

这种情况的出现一定的延迟,而且延迟很低,是可以接受的

  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++) {

    }

我要的是200,你给我800,又不是人民币,我干嘛要接受。

  • 定时器并不真正完全定时
  • 如果在主线程执行了一个长时间的操作, 可能导致延时才处理

定时器回调函数是在分线程执行的吗?

在主线程执行的, js是单线程的

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章