單執行緒:js 是單執行緒的,js在同一時間只能做一件事情這就叫單執行緒
任務佇列:異步程序與單執行緒本身看起來是沖突的,就是任務佇列使這兩個不沖突
注意:優先執行同步任務才執行異步任務
同步任務:在js同步運行的任務叫同步任務
異步任務:setTimeout 和 setInterval,DOM 事件,ES6中的promise 叫異步任務

Event Loop(事件回圈)
- 運行堆疊運行的是同步任務(運行堆疊執行的是同步任務)
- 瀏覽器識別了事件是一個異步任務,它不會把它放到運行堆疊中,而是拿走,拿走之后也不是立刻放到異步佇列中,同步任務執行完后再放入異步佇列(setTimeout 的最小時間在以前的瀏覽器中的10ms, 在最新的瀏覽器是4ms,如果設定是0 或者<4ms 都當作是4ms)(什么時候去異步佇列取這個任務?)
- 運行堆疊沒有任務了,就開始執行異步任務(這個時候異步任務變為同步任務去執行),執行完后如果運行堆疊沒有任務了,再監聽異步任務,這個回圈程序就是 Event Loop(什么時候往這個任務佇列中放異步任務)

什么時候開啟異步任務
- setTimeout 和 setInterval
- DOM 事件
- ES6 中的 Promise
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/948.html
標籤:JavaScript
下一篇:vue父子組件狀態同步的最佳方式
