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