JavaScript 是如何工做的: 事件循環和異步編程的崛起 + 5個如何更好的使用 async/await 編碼的技巧 - 學習筆記

  那麼,誰會告訴 JS 引擎去執行你的程序?事實上,JS 引擎不是單獨運行的 —— 它運行在一個宿主環境中,對於大多數開發者來講就是典型的瀏覽器和 Node.js。實際上,現在,JavaScript 被應用到了從機器人到燈泡的各類設備上。每一個設備都表明了一種不一樣類型的 JS 引擎的宿主環境。瀏覽器

  全部的環境都有一個共同點,就是都擁有一個 事件循環 的內置機制,它隨着時間的推移每次都去調用 JS 引擎去處理程序中多個塊的執行。異步

  這意味着 JS 引擎只是任意的 JS 代碼按需執行的環境。是它周圍的環境來調度這些事件(JS 代碼執行)。函數

  有不少文章或教程在介紹異步代碼的時候都會從 setTimeout(callback, 0) 開始。好了,如今你知道了事件循環作了什麼以及 setTimeout 是怎麼運行的:以第二個參數是 0 的方式調用 setTimeout 就是推遲到調用棧爲空才執行回調。spa

 

  一般說的JS單線程實際上是指JS只有一個同步執行的主線程,這個線程叫作Javascript引擎線程。實際上,瀏覽器中還有三種線程:UI線程、事件觸發線程、http請求線程,這三種線程都是異步線程,他們的工做就是是處理完異步任務後(更新完節點、用戶觸發事件、http加載完成),將回調函數放到異步隊列中,等待Javascript引擎線程去同步的執行。線程

相關文章
相關標籤/搜索