成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

js怎么處理10g的大數(shù)據(jù)(如何在JavaScript中處理大量數(shù)據(jù)?)

如何在JavaScript中處理大量數(shù)據(jù)?:這里,讓 讓我們看看瀏覽器是如何用JavaScript處理大量數(shù)據(jù)的。在上一篇文章中,我們談到了瀏覽器 對JavaScript代碼執(zhí)行的限制和基于定時器的偽

js怎么處理10g的大數(shù)據(jù)(如何在JavaScript中處理大量數(shù)據(jù)?)

如何在JavaScript中處理大量數(shù)據(jù)?

:這里,讓 讓我們看看瀏覽器是如何用JavaScript處理大量數(shù)據(jù)的。

在上一篇文章中,我們談到了瀏覽器 對JavaScript代碼執(zhí)行的限制和基于定時器的偽線程機制。在這里,讓我們 讓我們看看如何在JavaScript中處理大量數(shù)據(jù)。

幾年前,開發(fā)人員不會考慮在服務(wù)器之外處理大量數(shù)據(jù)。現(xiàn)在這個概念變了,很多Ajax程序需要在客戶端和服務(wù)器端傳輸大量數(shù)據(jù)。另外,更新DOM節(jié)點的過程從瀏覽器端來說也是一項耗時的工作。而且當(dāng)需要對信息進行分析處理時,很可能程序沒有響應(yīng),瀏覽器會拋出錯誤。

把需要處理大量數(shù)據(jù)的進程分成很多小段,然后通過JavaScript定時器分別執(zhí)行,可以防止瀏覽器裝死。讓 讓我們看看如何開始:

函數(shù)ProcessArray(數(shù)據(jù)、處理程序、回調(diào)){

Proc:需要處理數(shù)據(jù)。

handler: ;處理每一條數(shù)據(jù)的功能。

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

然后定義一些變量:

var maxtime = 100 var delay = 20 var queue =()

Maxtime表示每個處理進程的最大毫秒數(shù)。Delay表示每個塊之間的毫秒數(shù)。隊列是源數(shù)據(jù)的副本。雖然不是所有場景都需要,但是我們通過傳遞引用來修改它,所以還是備份一下比較好。

然后您可以使用setTimeout()方法來處理它:

setTimeout(function(){ var end time = new Date()maxtime do { hanler(())} while(queue . length gt 0 ampamp end time gt new Date())

首先計算endtime,也就是程序的最大處理時間。do.while循環(huán)用于處理每個小數(shù)據(jù)塊,直到循環(huán)完成或超時。

為什么使用do..while循環(huán)?JavaScript支持while和do…while循環(huán)。不同的是,做什么..while循環(huán)至少執(zhí)行一次。如果使用while循環(huán),那么當(dāng)開發(fā)人員設(shè)置一個非常小或很低的endtime值時,將根本不會執(zhí)行處理。

最后,我們將決定是否需要處理其他數(shù)據(jù),如果需要,然后再叫一遍:

if (queue.length gt 0) { setTimeout(,delay) } else { if(callback)callback()} },delay)}

這樣,回調(diào)函數(shù)將在每次數(shù)據(jù)處理結(jié)束時執(zhí)行。我們可以通過ProcessArray()測試一小組數(shù)據(jù):

//處理單個數(shù)據(jù)項function Process(dataitem){ console . log(dataitem)}//處理完成function Done() { console.log(