有單執行緒就有多執行緒,多執行緒就是可以在同個時間執行多個函式,可是 JavaScript 是單執行緒的程式語言,所以若給予一個以上的函式,會分開且按照順序執行,
例如:
1 | function A() { |
但 JS 有同步與非同步(Async)可以使用。而單執行緒是對於系統的執行,非同步是對於程式語言本身來執行,上方例子就是一個同步的範例,會按照給予的順序來進行,不會 A();
執行完就去執行 C();
,非同步的執行就是把原本要執行的內容往後放,這裡的現象稱為事件佇列(Event Queue)。
事件佇列 Event Queue
倘若下方有個函式,當中有一個非同步事件,非同步事件就會先移到事件佇列中,然後等到其他含是依序完成後,詳細解釋就是說當執行到 school()
,時,setTimout()
會先跳過不執行,等到 Go()
執行完後,才會執行 setTimeout 的事件佇列。
1 | function toilet() { |
監聽事件的非同步
很常使用的就是點擊事件這個監聽,原生的 JS 會寫綁定 DOM 元素,並給予監聽,最後會給個 false 或 true,預設是給 false ,原因是要先點擊後才會執行事件。