На заметку, оставлю небольшое решение проблемы зависания браузера или возникновение ошибки по таймауту при большом цикле или при сортировке данных функцией sort() в JavaScript.
Иногда бывает нужно обработать большой объем данных в браузере с помощью JavaScript или отсортировать большой массив. Но при этом браузер не выдерживает и зависает или выдает ошибку что было остановлено выполнение функции по таймауту.
Существует простое решение этой проблемы, которое помогает немного обмануть браузер, чтоб он "думал", что все хорошо и данные обрабатываются.
Для этого в теле цикла достаточно разместить следующий код:
if(outs > 4000){
outs = 0;
setTimeout(doWork, 1);
}
outs++;
где doWork – это пустая функция:
function doWork(){}
С помощью такой манипуляции мы приостанавливаем выполнение основной функции и вызываем пустую doWork с задержкой в 1 мс. Этого достаточно, чтоб браузер не вылетал по таймауту и продолжал выполнение большого цикла.
Ну о недостатках писать думаю не стоит, они и так ясны.

#1 Dimmduh - Май 23rd, 2010 at 12:54
Спасибо!
Попробовал, не работает (firefox 3.6)
цикл – 1 млн. итераций.
Есть еще какие-то решения?
//старт моделирования
while( cur_time 4000){
outs = 0;
setTimeout(doWork, 1);
}
outs++;
}