一、事件循環(huán)
JavaScript是單線(xiàn)程,同一個(gè)時(shí)間只能做一件事情,所以執(zhí)行任務(wù)需要排隊(duì)。如果前一個(gè)耗時(shí)很長(zhǎng),那么下一個(gè)只能等待。
1)兩種任務(wù)
為了更好的處理任務(wù),JavaScript語(yǔ)言的設(shè)計(jì)者將任務(wù)分為兩種:同步任務(wù)(synchronous)與異步任務(wù)(asynchronous)。
同步任務(wù):在主線(xiàn)程上排隊(duì)執(zhí)行的任務(wù)。
異步任務(wù):放在“任務(wù)隊(duì)列”(task queue)中,只有當(dāng)主線(xiàn)程空了,才會(huì)將“任務(wù)隊(duì)列”中的任務(wù)放到主線(xiàn)程中。
這就是JavaScript的運(yùn)行機(jī)制,這個(gè)過(guò)程會(huì)不斷重復(fù),這個(gè)機(jī)制叫事件循環(huán)(Event Loop)。
2)事件循環(huán)
事件循環(huán)模型可以用下圖描述,圖片來(lái)自Philip Roberts的演講《Help, I’m stuck in an event loop》:
1. “WebAPIs”內(nèi)的就是異步任務(wù),包括DOM事件、Ajax和setTimeout。
2. “callback queue”內(nèi)的是一個(gè)任務(wù)隊(duì)列,包括click、load、done。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線(xiàn)安全]玩轉(zhuǎn)無(wú)線(xiàn)電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26