2013-05-11 46 views
5

我創建了一個蠻力的腳本,基本上需要檢查超過27,000個選項,並在每次檢查後在div內顯示結果。Javascript無法檢測大量元素

腳本編碼正確,如果我降低的期權數量它的作品足夠好,但如果我有很多選擇,幾秒鐘後,會彈出一個窗口,告訴我,我的劇本是反應遲鈍。如何在檢查多種選項時使其響應。

哦,我差點忘了,它顯示的數據(每次檢查後顯示)只有當彈出窗口出現(有點奇怪)。

+0

27000是JavaScript的太多選項檢查除了你的編碼結構可能放緩的原因。最好向我們展示一些代碼。並使用定時函數,如'setTimeout'而不是循環。 – 2013-05-11 16:47:23

+0

將工作劃分爲更小的步驟,完成一個步驟後,調用'setTimeout(nextStep,1)'。 – DCoder 2013-05-11 16:47:25

+5

你可能想看看[網絡工作者](http://www.html5rocks.com/en/tutorials/workers/basics/) – Lix 2013-05-11 16:48:07

回答

1

異步批處理可以解決你的問題:

var options = ...; // your code 

// I assume you are using something like this 
function processAll() { 
    for(var i=0; i<options.length; ++i) ... // causes unresponsivity 
} 

// try to use this instead 
function batchProcessing(from) { 
    if(from >= options.length) return; 
    var to = Math.min(1000, options.length-from); 
    for(var i=from; i<from+to; ++i) ... // your code 
    // run the next batch asynchronously, let the browser catch the breath 
    setTimeout(batchProcessing.bind(null, from+1000)); 
}