上個周日,介紹了如何使用setTimeout代替setInterval進行間歇調(diào)用,這個周日,繼續(xù)來講《JavaScript高級程序設(shè)計》這本書里面,對于setTimeout的另一種妙用——防止循環(huán)超時

 

【這是鋪墊,為故事的高潮埋下伏筆】

  JS是單線程的,一個代碼塊里面的代碼,只能按順序從上到下執(zhí)行,所以如果中間有一塊代碼,執(zhí)行起來非常耗時,就會導(dǎo)致下面的代碼無法執(zhí)行,出現(xiàn)瀏覽器假死的狀態(tài)。

  JS的耗時操作,常見的有兩種  1.向服務(wù)器發(fā)起請求   2.對數(shù)組的循環(huán)操作  (當(dāng)然,還有一種,就是把1和2合在一起,叫做  在循環(huán)操作里面向服務(wù)器發(fā)出請求,哈哈哈,實際項目里面經(jīng)常有人這么干)

  解決這兩種耗時操作的思路都是一樣的——異步編程。JS的異步編程,并不是多線程,因為正如上面所說的,JS是單線程的。JS的異步,直觀上的理解,就是延時和回調(diào)。

網(wǎng)友評論