欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

JavaScript中怎么利用setTimeout防止循環(huán)超時

今天就跟大家聊聊有關(guān)JavaScript中怎么利用setTimeout防止循環(huán)超時,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

尉犁網(wǎng)站建設公司創(chuàng)新互聯(lián),尉犁網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為尉犁近1000家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設要多少錢,請找那個售后服務好的尉犁做網(wǎng)站的公司定做!

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

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

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

對于第一種耗時情況,我們采用的是ajax異步請求,待耗時的請求返回結(jié)果時,進行回調(diào)操作。

對于第二種耗時情況,則可以使用本文即將介紹的方法,setTimeout延時調(diào)用,進行數(shù)組分塊處理。

【這才是高潮】

假設我們要處理一個大小為100的數(shù)組,對于數(shù)組中每個元素,都需要執(zhí)行大量的處理,每個元素大約需要1s的處理時間;

并且我們認為,程序后面的代碼,不會依賴于我們對這個數(shù)組的處理結(jié)果。

于是就有了下面這段代碼,以兩種方式來處理這個數(shù)組,一種是常規(guī)方式,一種是setTImeout的數(shù)組分塊處理

var processTime = 0;
//常規(guī)操作
tcCircle();
//注釋上面的代碼 放開下面注釋 以執(zhí)行setTimeout數(shù)組分塊操作
//tcCircleUseSetTimeout();
//time consuming circle
function tcCircle(){
  var arr = new Array(100);
  for(var i=0;i<arr.length;i++){
    process(arr[i]);
  }
  //頁面標題欄一直轉(zhuǎn)圈 且下面的語句遲遲無法執(zhí)行
  console.log("important process");
  console.log("finish!");
}
function tcCircleUseSetTimeout(){
  var arr = new Array(100);
  setTimeout(function(){
    var ele = arr.shift();
    process(ele);
    if(arr.length>0){
      setTimeout(arguments.callee,100);
    }
  },100);
  console.log("important process");
  console.log("finish!");
}
function process(ele){
  console.log("process"+(++processTime));
  //模擬長時間的處理過程
  sleep(1000);
}
function sleep(sleepTime){
  var start=new Date().getTime();
  while(true){
    if(new Date().getTime()-start>sleepTime){
      break;  
    }
  }
}

首先我們執(zhí)行常規(guī)的操作,由于是單線程,可想而知,執(zhí)行完這段程序,至少要 1*100 = 100s,并且瀏覽器會出現(xiàn)假死

JavaScript中怎么利用setTimeout防止循環(huán)超時

然后我們執(zhí)行setTimeout方式的方法,setTImeout的方式,我們每次只操作數(shù)組里面的一個對象,并且在每次操作之間,設置了100ms的延時,供js引擎執(zhí)行主干的代碼,因此,很明顯,執(zhí)行的效果非常棒!

JavaScript中怎么利用setTimeout防止循環(huán)超時

看完上述內(nèi)容,你們對JavaScript中怎么利用setTimeout防止循環(huán)超時有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。

新聞名稱:JavaScript中怎么利用setTimeout防止循環(huán)超時
當前網(wǎng)址:http://chinadenli.net/article18/iegcdp.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、動態(tài)網(wǎng)站、面包屑導航、網(wǎng)站內(nèi)鏈、ChatGPT、App設計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設
亚洲性生活一区二区三区| 精品国产91亚洲一区二区三区 | 一区二区三区精品人妻| 午夜直播免费福利平台| 欧美国产日本高清在线| 少妇一区二区三区精品| 亚洲中文字幕熟女丝袜久久| 亚洲成人黄色一级大片| 亚洲国产av在线观看一区| 1024你懂的在线视频| 女人精品内射国产99| 亚洲国产另类久久精品| 国产内射一级一片内射高清| 麻豆视传媒短视频免费观看| 办公室丝袜高跟秘书国产| 亚洲国产天堂av成人在线播放| 老司机精品视频在线免费看| 99日韩在线视频精品免费| 精品欧美在线观看国产| 国产av大片一区二区三区| 亚洲av专区在线观看| 老司机亚洲精品一区二区| 九九热这里只有免费精品| 欧美胖熟妇一区二区三区| 丰满少妇被猛烈插入在线观看| 91欧美日韩精品在线| 在线免费看国产精品黄片| 国产欧美一区二区另类精品| 大香蕉久草网一区二区三区| 高清亚洲精品中文字幕乱码| 日本人妻熟女一区二区三区 | 精品国产亚洲区久久露脸| 激情偷拍一区二区三区视频| 美女黄色三级深夜福利| 久久三级国外久久久三级| 欧美尤物在线视频91| 美女被啪的视频在线观看| 丰满少妇被粗大猛烈进出视频| 午夜激情视频一区二区| 亚洲熟妇av一区二区三区色堂| 欧美精品久久99九九|