上個(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)。

網(wǎng)友評(píng)論