国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

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

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

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

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

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

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

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

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

函數(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表示每個(gè)處理進(jìn)程的最大毫秒數(shù)。Delay表示每個(gè)塊之間的毫秒數(shù)。隊(duì)列是源數(shù)據(jù)的副本。雖然不是所有場(chǎng)景都需要,但是我們通過(guò)傳遞引用來(lái)修改它,所以還是備份一下比較好。

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

setTimeout(function(){ var end time = new Date()maxtime do { hanler(())} while(queue . length gt 0 ampamp end time gt 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)。不同的是,做什么..while循環(huán)至少執(zhí)行一次。如果使用while循環(huán),那么當(dāng)開(kāi)發(fā)人員設(shè)置一個(gè)非常小或很低的endtime值時(shí),將根本不會(huì)執(zhí)行處理。

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

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

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

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