日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
如何在JavaScript中處理大量數(shù)據(jù)

推薦專題:JavaScript學(xué)習(xí)筆記 有問有答

十余年建站經(jīng)驗(yàn), 成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)客戶的見證與正確選擇。創(chuàng)新互聯(lián)公司提供完善的營銷型網(wǎng)頁建站明細(xì)報(bào)價(jià)表。后期開發(fā)更加便捷高效,我們致力于追求更美、更快、更規(guī)范。

在幾年之前,開發(fā)人員不會(huì)去考慮在服務(wù)端之外處理大量的數(shù)據(jù)?,F(xiàn)在這種觀念已經(jīng)改變了,很多Ajax程序需要在客戶端和服務(wù)器端傳輸大量的數(shù)據(jù)。此外,更新DOM節(jié)點(diǎn)的處理在瀏覽器端來看也是一個(gè)很耗時(shí)的工作。而且,需要對(duì)這些信息進(jìn)行分析處理的時(shí)候也很可能導(dǎo)致程序無響應(yīng),瀏覽器拋出錯(cuò)誤。

將需要大量處理數(shù)據(jù)的過程分割成很多小段,然后通過JavaScript的計(jì)時(shí)器來分別執(zhí)行,就可以防止瀏覽器假死。先看看怎么開始:

 
 
 
  1. function ProcessArray(data,handler,callback){  

ProcessArray()方法支持三個(gè)參數(shù):

◆data:需要處理的數(shù)據(jù)

◆handler:處理每條數(shù)據(jù)的函數(shù)

◆callback:回調(diào)函數(shù)

然后定義一些變量:

 
 
 
  1. var maxtime = 100;  
  2. var delay = 20;  
  3. var queue = data.concat(); 

maxtime表示每個(gè)處理進(jìn)程的最大毫秒數(shù)。delay表示每個(gè)程序塊之間的毫秒數(shù)。queue是源數(shù)據(jù)的復(fù)制,雖然不是在所有情景下都必要,但是我們是通過傳遞引用修改的,所以最好還是備份一下。

然后就可以使用setTimeout()方法來處理了:

 
 
 
  1. setTimeout(function(){  
  2.      var endtime = new Date()  + maxtime;  
  3.      do{  
  4.           hanler(queue.shift());  
  5.      }while(queue.length>0 && endtime > new Date()); 

首先,先計(jì)算endtime,這是程序處理的最大時(shí)間。do.while 循環(huán)用來處理每一個(gè)小塊的數(shù)據(jù),直到循環(huán)全部完成或者超時(shí)。

為什么使用do..while循環(huán)呢?

JavaScript支持while和do…while循環(huán)。不同之處在于do..while循環(huán)回至少執(zhí)行一次。如果使用while循環(huán),那么當(dāng)開發(fā)者設(shè)置一個(gè)很小或者很低的endtime值的時(shí)候,那么處理就根本不會(huì)執(zhí)行了。

最后,我們?cè)贈(zèng)Q定是否需要處理其他的數(shù)據(jù),如果需要,那么就再調(diào)用一次:

 
 
 
  1.  if (queue.length > 0) {  
  2.     setTimeout(arguments.callee, delay);  
  3.   }  
  4.   else {  
  5.     if (callback) callback();  
  6.   }  
  7. }, delay);  

這樣回調(diào)函數(shù)會(huì)在每一個(gè)數(shù)據(jù)都處理結(jié)束的時(shí)候執(zhí)行。我們可以通過ProcessArray()來測(cè)試一小組數(shù)據(jù):

 
 
 
  1. // process an individual data item  
  2. function Process(dataitem) {  
  3.   console.log(dataitem);  
  4. }  
  5. // processing is complete  
  6. function Done() {  
  7.   console.log("Done");  
  8. }  
  9. // test data  
  10. var data = [];  
  11. for (var i = 0; i < 500; i++) data[i] = i;  
  12. // process all items  
  13. ProcessArray(data, Process, Done); 

這個(gè)方法在任何瀏覽器中都可以執(zhí)行,不過HTML 5提供了更好的辦法,可參考專題:HTML 5 下一代Web開發(fā)標(biāo)準(zhǔn)詳解

原文鏈接:http://rockux.com


新聞名稱:如何在JavaScript中處理大量數(shù)據(jù)
鏈接分享:http://m.5511xx.com/article/cdgpepc.html