5
我創建了一個蠻力的腳本,基本上需要檢查超過27,000個選項,並在每次檢查後在div內顯示結果。Javascript無法檢測大量元素
腳本編碼正確,如果我降低的期權數量它的作品足夠好,但如果我有很多選擇,幾秒鐘後,會彈出一個窗口,告訴我,我的劇本是反應遲鈍。如何在檢查多種選項時使其響應。
哦,我差點忘了,它顯示的數據(每次檢查後顯示)只有當彈出窗口出現(有點奇怪)。
我創建了一個蠻力的腳本,基本上需要檢查超過27,000個選項,並在每次檢查後在div內顯示結果。Javascript無法檢測大量元素
腳本編碼正確,如果我降低的期權數量它的作品足夠好,但如果我有很多選擇,幾秒鐘後,會彈出一個窗口,告訴我,我的劇本是反應遲鈍。如何在檢查多種選項時使其響應。
哦,我差點忘了,它顯示的數據(每次檢查後顯示)只有當彈出窗口出現(有點奇怪)。
異步批處理可以解決你的問題:
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));
}
27000是JavaScript的太多選項檢查除了你的編碼結構可能放緩的原因。最好向我們展示一些代碼。並使用定時函數,如'setTimeout'而不是循環。 – 2013-05-11 16:47:23
將工作劃分爲更小的步驟,完成一個步驟後,調用'setTimeout(nextStep,1)'。 – DCoder 2013-05-11 16:47:25
你可能想看看[網絡工作者](http://www.html5rocks.com/en/tutorials/workers/basics/) – Lix 2013-05-11 16:48:07