基本概念:
- 微任務佇列中的任務可稱為
微任務 - 訊息佇列中的任務可稱為
宏任務 - 呼叫堆疊也可以稱為
主執行緒
單執行緒:
- 單執行緒指的是只有一個主執行緒的執行緒,代碼的執行由一個主執行緒來完成,
- JavaScript就是一個單執行緒的語言
為什么js是單執行緒?如果一個執行緒在一個節點中添加內容,另一個執行緒要洗掉這個節點,所以為了不必要的麻煩,js就是一門單執行緒語言,
js的異步執行分析:
- 拿現實生活來舉例,比如一個人在家(單執行緒),你既要煮飯又要炒菜,
- 那么你可以怎么做呢?你可以把煮飯分為兩段,
- 第一段先把米放入電飯煲交給了電飯煲處理(電飯煲就是一個模塊),再去炒菜,炒完菜再處理第二段也就是把煮好的飯拿出來,
- 把飯放入電飯煲煮的程序就稱之為異步,飯煮好了會自動跳轉,這就相當于異步任務被對應的模塊決議好了會自動放入訊息佇列,等待事件回圈調入主執行緒執行,
- 主執行緒任務執行完成,會通過不斷的回圈訊息佇列,來執行其中的任務,
- 也就是你把炒菜完了,你就會不斷的觀察飯是否跳轉(也就是回圈訊息佇列看是否有任務),如果有就把飯裝到碗里開始吃飯,此時任務就全部完成,
- 但是干活的始侄訓是一個人,這就是單執行緒的異步執行程序,
簡單圖解:

補充執行順序:
- 而常見的promise,async,await 執行放入的是微任務佇列中,主執行緒的代碼執行完后,會優先回圈微任務佇列的代碼,再是訊息佇列,
- 主執行緒 > 微任務佇列 > 訊息佇列
- 注意!!訊息佇列與微任務佇列的任務都是先進先執行,
js的同步執行分析:
- 代碼由上至下執行,前面任務在執行,后面代碼必須排隊等待,
- 就如上面的例子如果不做異步處理,讓任務同步執行就會一直卡在做飯的地方,等飯煮好了才能去炒菜,
感興趣還可以關注我的:
cnsd:m0_46217225
掘金:寸頭男生
github:Buzz_cut
微信公眾號:web_mycode
知乎:寸頭男生
我的QQ:2356924146
我會持續的編程干貨,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/274889.html
標籤:其他
上一篇:小程式 基本常識(一)
