JS 運行機制


 

一、如何理解JS的單線程

  JS 在同一時間段只能做一件事

  JS 同步是單線程,異步可以實現多進程

 

二、理解任務隊列

  js 是一門單線程語言,這就意味着所有任務都需要排隊,前一個任務結束,后一個任務才會開始。所以就有了 同步任務 和 異步任務。

  同步任務指的是,在主線程上排隊執行的任務,前一個任務結束,才會開始執行下一個任務;

  異步任務指的是,不進入主線程,而進入一個“任務隊列”,只有“任務隊列”通知主線程,某個異步任務可以執行了,該任務才會進入主線程執行,而且可以執行多個任務,不會造成阻塞。

 

三、理解事件循環 Event Loop

 

  異步執行的運行機制如下:

  1.所有同步任務都在主線程上執行,形成一個執行棧(execution context stack)。

  2.主線程之外,還存在一個"任務隊列"(task queue)。只要異步任務有了運行結果,就在"任務隊列"之中放置一個事件。

  3.一旦"執行棧"中的所有同步任務執行完畢,系統就會讀取"任務隊列",看看里面有哪些事件。那些對應的異步任務,於是結束等待狀態,進入執行棧,開始執行。

  主線程不斷重復上面的第三步。

  主線程從"任務隊列"中讀取事件,這個過程是循環不斷的,所以整個的這種運行機制又稱為Event Loop(事件循環)。只要主線程空了,就會去讀取"任務隊列",這就是JavaScript的運行機制。

  

  js 運行機制

 

 原文鏈接:https://baijiahao.baidu.com/s?id=1615713540466951098&wfr=spider&for=pc


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM