JavaScript執行機制詳解:再談Evemt
1.why 單執行緒?
- JavaScript目的是與使用者互動+操作DOM,非單執行緒帶來複雜同步問題;EXAMPLE:有兩個執行緒 一個在DOM節點上新增內容,另外一個又在刪除這個點。瀏覽器聽誰的?
- 新標準 HTML5提出web worker標準,允許JavaScript建立多執行緒,但是子執行緒完全受主執行緒控制,且不得操作DOM。沒有改變其本質。
- 弊端 單執行緒執行那後面的排著等你。
2. 任務佇列
很多時候IO(烏龜)限制CPU(兔子)的發揮。
所以把IO裡面的任務?
將任務分成同步與非同步。
- 同步:主執行緒上排隊進行的任務。按序執行。
- 非同步:不進入主執行緒、而進入任務佇列的任務。只有去通知主執行緒某個非同步任務可執行了,該任務才會進入主執行緒執行。
- 同步執行
- 非同步執行
上圖主執行緒的綠色部分,還是表示執行時間,而橙色部分表示空閒時間。每當遇到I/O的時候,主執行緒就讓Event Loop執行緒去通知相應的I/O程式,然後接著往後執行,所以不存在紅色的等待時間。等到I/O程式完成操作,Event Loop執行緒再把結果返回主執行緒。主執行緒就呼叫事先設定的回撥函式,完成整個任務。
可以看到,由於多出了橙色的空閒時間,所以主執行緒得以執行更多的任務,這就提高了效率。這種執行方式稱為”非同步模式“(asynchronous I/O)。
相關文章
- JavaScript 執行機制--Event Loop詳解JavaScriptOOP
- js執行機制詳解JS
- JavaScript執行機制JavaScript
- Javascript 執行機制JavaScript
- 探索JavaScript執行機制JavaScript
- 談談 Javascript 的執行機制及對同步非同步的理解JavaScript非同步
- JavaScript執行緒機制與事件機制JavaScript執行緒事件
- Javascript執行機制(setTimeout/Promise)JavaScriptPromise
- javascript執行機制:Event LoopJavaScriptOOP
- JavaScript非同步機制詳解JavaScript非同步
- 淺談小程式執行機制
- 再談冪等機制
- 帶你瞭解JavaScript的執行機制—Event LoopJavaScriptOOP
- 夯實基礎上篇-圖解 JavaScript 執行機制圖解JavaScript
- 深入淺出JavaScript執行機制JavaScript
- JavaScript執行機制:event-loopJavaScriptOOP
- JavaScript的程式碼執行機制JavaScript
- JavaScript執行機制深層剖析JavaScript
- 談談JavaScript中的this機制JavaScript
- JavaScript執行機制-node事件迴圈JavaScript事件
- Javascript中的執行機制——Event LoopJavaScriptOOP
- 傻傻分不清的javascript執行機制JavaScript
- 【執行機制】 JavaScript的事件迴圈機制總結 eventLoopJavaScript事件OOP
- 圖解JS執行機制圖解JS
- 淺談promise和js執行機制(一)PromiseJS
- 淺談promise和js執行機制(二)PromiseJS
- 從JS的執行機制的角度談談作用域JS
- 再談優雅重試(retry)機制
- 來吧!再談多執行緒執行緒
- JavaScript 執行機制-瀏覽器事件迴圈JavaScript瀏覽器事件
- 一次性搞懂JavaScript 執行機制JavaScript
- JavaScript 中 this 的執行機制及爬坑指南JavaScript
- JavaScript中this的執行機制及爬坑指南JavaScript
- Javascript繼承,再談JavaScript繼承
- 淺談 React、Flux 與 Redux(各個的執行機制)ReactRedux
- 深入理解JavaScript之徹底弄懂JsEventLoop執行機制JavaScriptJSOOP
- 深入理解JVM(③)再談執行緒安全JVM執行緒
- 理解Reacg執行機制