使用 setTimeout()和 setInterval()創建的定時器可以用於實現有趣且有用的功能。執行時機是不能保證的,因為在頁面的生命周期中,不同時間可能有其他代碼在控制 JavaScript 進程。在頁面下載完後的代碼運行、事件處理程式、Ajax 回調函數都必須使用同樣的線程來執行。實際上, ...
使用 setTimeout()和 setInterval()創建的定時器可以用於實現有趣且有用的功能。執行時機是不能保證的,因為在頁面的生命周期中,不同時間可能有其他代碼在控制 JavaScript 進程。在頁面下載完後的代碼運行、事件處理程式、Ajax 回調函數都必須使用同樣的線程來執行。實際上,瀏覽器負責進行排序,指派某段代碼在某個時間點運行的優先順序。有關於js的單線程請點擊:瀏覽器的多進程 可以把 JavaScript 想象成在時間線上運行的。當頁面載入時,首先執行是任何包含在<script>元素中的代碼,通常是頁面生命周期後面要用到的一些簡單的函數和變數的聲明,不過有時候也包含一些初始數據的處理。在這之後,JavaScript 主線程將等待更多代碼執行。例如,當點擊某個按鈕時,onclick 事件處理程式會立刻執行,只要 JavaScript 主線程處於空閑狀態。這樣一個頁面的時間線類似如圖