上個(gè)周日,介紹了如何使用setTimeout代替setInterval進(jìn)行間歇調(diào)用,這個(gè)周日,繼續(xù)來講《JavaScript高級(jí)程序設(shè)計(jì)》這本書里面,對(duì)于setTimeout的另一種妙用——防止循環(huán)超時(shí)
【這是鋪墊,為故事的高潮埋下伏筆】
JS是單線程的,一個(gè)代碼塊里面的代碼,只能按順序從上到下執(zhí)行,所以如果中間有一塊代碼,執(zhí)行起來非常耗時(shí),就會(huì)導(dǎo)致下面的代碼無法執(zhí)行,出現(xiàn)瀏覽器假死的狀態(tài)。
JS的耗時(shí)操作,常見的有兩種 1.向服務(wù)器發(fā)起請(qǐng)求 2.對(duì)數(shù)組的循環(huán)操作 (當(dāng)然,還有一種,就是把1和2合在一起,叫做 在循環(huán)操作里面向服務(wù)器發(fā)出請(qǐng)求,哈哈哈,實(shí)際項(xiàng)目里面經(jīng)常有人這么干)
解決這兩種耗時(shí)操作的思路都是一樣的——異步編程。JS的異步編程,并不是多線程,因?yàn)檎缟厦嫠f的,JS是單線程的。JS的異步,直觀上的理解,就是延時(shí)和回調(diào)。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎ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
- 從棧不平衡問題 理解 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)來看看(二) 2017-07-26