單執行緒
一次只能執行一件事情行完後才會接續下一步驟
JavaScript 是屬於 單執行緒
的程式語言
同步與非同步
執行緒 => 系統本身運作流程
同步與非同步 => 針對程式語言
這樣講有點似懂非懂的感覺,直接舉例說明會更清楚
以下是同步
的範例:
1 | function a() { |
上述執行順序肯定是 a() > b() > c(),不會在執行 a() 時,同時執行 b()。
以下是非同步
範例:
1 | function a() { |
這裡多了一個 setTimeout
的非同步函式。
在 JS 中,非同步函式
會被放進 事件佇列(Event queue)
中,在其他函式都執行完後,才會執行
要注意的是,執行順序依舊是 a() > b() > c(),但是 b() 中的非同步
會單獨移到事件佇列
,而其他程式仍舊維持同步
運作,所以 test
才會在 c() 前面呦