成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何在JavaScript中處理大量數據

開發 前端
在之前的文章中,我們講了瀏覽器對于JavaScript代碼執行的限制和基于計時器的偽線程機制。這里,我們再看看如何在JavaScript中處理大量數據。

51CTO推薦專題:JavaScript學習筆記 有問有答

在幾年之前,開發人員不會去考慮在服務端之外處理大量的數據。現在這種觀念已經改變了,很多Ajax程序需要在客戶端和服務器端傳輸大量的數據。此外,更新DOM節點的處理在瀏覽器端來看也是一個很耗時的工作。而且,需要對這些信息進行分析處理的時候也很可能導致程序無響應,瀏覽器拋出錯誤。

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

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

ProcessArray()方法支持三個參數:

◆data:需要處理的數據

◆handler:處理每條數據的函數

◆callback:回調函數

然后定義一些變量:

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

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

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

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

首先,先計算endtime,這是程序處理的最大時間。do.while 循環用來處理每一個小塊的數據,直到循環全部完成或者超時。

為什么使用do..while循環呢?

JavaScript支持while和do…while循環。不同之處在于do..while循環回至少執行一次。如果使用while循環,那么當開發者設置一個很小或者很低的endtime值的時候,那么處理就根本不會執行了。

最后,我們再決定是否需要處理其他的數據,如果需要,那么就再調用一次:

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

這樣回調函數會在每一個數據都處理結束的時候執行。我們可以通過ProcessArray()來測試一小組數據:

  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); 

這個方法在任何瀏覽器中都可以執行,不過HTML 5提供了更好的辦法,可參考專題:HTML 5 下一代Web開發標準詳解

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

【編輯推薦】

  1. 8個令人驚嘆的JavaScript效果的網站
  2. 再談JavaScript圖片預加載技術
  3. 示例:JavaScript中的后續傳遞風格
  4. 如何編寫高質量的JavaScript代碼
責任編輯:陳貽新 來源: RockUX
相關推薦

2025-01-21 15:20:14

2024-10-22 15:10:49

2022-01-21 10:58:39

JavaScriptGolangPython

2021-03-29 08:01:20

JavaScript數據結構

2020-06-24 07:53:03

機器學習技術人工智能

2021-03-11 23:43:20

JavaScript數組開發

2021-03-18 10:45:02

JavaScript數組運算符

2021-09-03 09:06:42

代碼時間開發

2016-11-07 21:37:46

javascript過濾器filter

2018-06-26 15:40:49

Tensorflow.MNIST圖像數據

2025-02-05 10:02:03

Locust測試異常處理

2021-02-26 15:10:00

前端React組件交互

2022-03-15 07:55:09

JavaScript線性儀表圖開發

2020-11-24 10:10:48

人工智能

2018-10-11 09:40:53

前端JavaScript編程語言

2022-04-27 08:55:01

Spring外部化配置

2024-04-11 08:30:05

JavaScript數組函數

2020-11-26 08:12:24

JavaScript對象數組

2022-07-07 07:22:01

瀏覽器JavaScript工具

2015-07-06 09:59:56

JavaScript私有成員
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲免费网 | 91中文在线观看 | 亚洲男人的天堂网站 | 免费激情网站 | 99婷婷| 精品一区国产 | 亚洲国产精品99久久久久久久久 | 日韩免费视频一区二区 | 中文字幕视频在线看5 | 国产一区二区三区四区区 | 嫩草最新网址 | 欧美一区2区三区3区公司 | 国产96在线 | 久久91av| 中文字幕成人在线 | 91麻豆精品国产91久久久更新资源速度超快 | 国产一区日韩在线 | 亚洲日本视频 | 精品久久一区 | 一区二区三区精品视频 | 99福利在线观看 | 中文字幕免费观看 | 日韩欧美一级 | 亚洲欧美精品国产一级在线 | 亚洲成人精品在线 | 亚洲情侣视频 | 国产综合精品一区二区三区 | 91视视频在线观看入口直接观看 | 久草视频网站 | 五月婷婷 六月丁香 | 亚洲国产精品久久 | 亚洲精品视频免费看 | 欧美成人免费 | 一级国产精品一级国产精品片 | 一区二区三区高清在线观看 | 国产精品1区2区3区 男女啪啪高潮无遮挡免费动态 | 一级片在线观看 | 午夜精品一区二区三区免费视频 | 亚洲经典一区 | 我爱操 | 四虎影院在线免费观看 |