一、事件循環(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》:
1. “WebAPIs”內的就是異步任務,包括DOM事件、Ajax和setTimeout。
2. “callback queue”內的是一個任務隊列,包括click、load、done。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動安全 [無線安全]玩轉無線電——不安全的藍牙鎖 2017-07-26
- 消息隊列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標分割】 2017-07-26
- 詞向量-LRWE模型-更好地識別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實現JSON轉Model - HandyJSON使用講解 2017-07-26
- 阿里移動安全 Android端惡意鎖屏勒索應用分析 2017-07-26
- 集合結合數據結構來看看(二) 2017-07-26
