定時器真是定時執行的嗎?

定時器真是定時執行的嗎?

定時器並不能保證真正定時執行

  • 一般會延遲一丁點(可以接受)
  • 也有可能延遲很長時間(不能接受)

那麼什麼情況可以接受,什麼情況下不能接受呢?

  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是單線程的

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