1、如何理解JS的單線程
JS 在同一時間段只能作一件事異步
JS 同步是單線程,異步能夠實現多進程ide
2、理解任務隊列
js 是一門單線程語言,這就意味着全部任務都須要排隊,前一個任務結束,後一個任務纔會開始。因此就有了 同步任務 和 異步任務。oop
同步任務指的是,在主線程上排隊執行的任務,前一個任務結束,纔會開始執行下一個任務;spa
異步任務指的是,不進入主線程,而進入一個「任務隊列」,只有「任務隊列」通知主線程,某個異步任務能夠執行了,該任務纔會進入主線程執行,並且能夠執行多個任務,不會形成阻塞。線程
3、理解事件循環 Event Loop
異步執行的運行機制以下:
1.全部同步任務都在主線程上執行,造成一個執行棧(execution context stack)。blog
2.主線程以外,還存在一個"任務隊列"(task queue)。只要異步任務有了運行結果,就在"任務隊列"之中放置一個事件。隊列
3.一旦"執行棧"中的全部同步任務執行完畢,系統就會讀取"任務隊列",看看裏面有哪些事件。那些對應的異步任務,因而結束等待狀態,進入執行棧,開始執行。進程
主線程不斷重複上面的第三步。事件
主線程從"任務隊列"中讀取事件,這個過程是循環不斷的,因此整個的這種運行機制又稱爲Event Loop(事件循環)。只要主線程空了,就會去讀取"任務隊列",這就是JavaScript的運行機制。ip