2013-05-11 10 views
5

Stworzyłem skrypt typu brute-force, który zasadniczo wymaga sprawdzenia ponad 27 000 opcji, a po każdym sprawdzeniu wyświetla wynik wewnątrz elementu div.Nieodpowiedzialny JavaScript sprawdzający wiele elementów

Skrypt jest poprawnie zakodowany i jeśli zmniejszę liczbę opcji, działa wystarczająco dobrze, ale jeśli mam wiele opcji, po kilku sekundach pojawi się okno informujące, że mój skrypt nie odpowiada. Jak mogę go dostosować, sprawdzając te wiele opcji.

Och i prawie zapomniałem, wyświetla dane (które są wyświetlane po każdym sprawdzeniu) tylko wtedy, gdy pojawia się okno pop-up (trochę dziwne).

+0

27000 jest zbyt wiele opcji do kontroli JavaScript oprócz struktury kodowania może być przyczyną spowolnienia. Lepiej pokazać nam jakiś kod. i używaj funkcji czasowych, takich jak 'setTimeout' zamiast pętli. –

+0

Podziel swoją pracę na mniejsze etapy, po zakończeniu etapu wywołaj 'setTimeout (nextStep, 1)'. – DCoder

+5

Możesz zajrzeć do [Web pracowników] (http://www.html5rocks.com/en/tutorials/workers/basics/) – Lix

Odpowiedz

1

asynchroniczne przetwarzanie wsadowe mogą rozwiązać swój problem:

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)); 
} 
Powiązane problemy