一、事件循環(huán)

JavaScript是單線程,同一個時間只能做一件事情,所以執(zhí)行任務需要排隊。如果前一個耗時很長,那么下一個只能等待。

1)兩種任務

為了更好的處理任務,JavaScript語言的設計者將任務分為兩種:同步任務(synchronous)與異步任務(asynchronous)。

同步任務:在主線程上排隊執(zhí)行的任務。

異步任務:放在“任務隊列”(task queue)中,只有當主線程空了,才會將“任務隊列”中的任務放到主線程中。

這就是JavaScript的運行機制,這個過程會不斷重復,這個機制叫事件循環(huán)(Event Loop)。

2)事件循環(huán)

事件循環(huán)模型可以用下圖描述,圖片來自Philip Roberts的演講《Help, I’m stuck in an event loop》:

平面設計培訓,網頁設計培訓,美工培訓,游戲開發(fā),動畫培訓

1. “WebAPIs”內的就是異步任務,包括DOM事件、Ajax和setTimeout。

2. “callback queue”內的是一個任務隊列,包括click、load、done。

延伸閱讀

學習是年輕人改變自己的最好方式-Java培訓,做最負責任的教育,學習改變命運,軟件學習,再就業(yè),大學生如何就業(yè),幫大學生找到好工作,lphotoshop培訓,電腦培訓,電腦維修培訓,移動軟件開發(fā)培訓,網站設計培訓,網站建設培訓學習是年輕人改變自己的最好方式