Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Длинные циклы javascript (https://javascript.ru/forum/events/23420-dlinnye-cikly-javascript.html)

diprom 22.11.2011 20:57

Длинные циклы javascript
 
Здравствуйте.
Скажите, написав банальную функцию
function a()
{
for i =0; i < 1000000; i++)
//что-то делаем
}
Internet Explorer начинает говорить, что страница не отвечает и через
какое-то время заканчивает ее обработку. Что добавить в этой функции, чтобы, как пример deplhi application.processmessages() обрабатывалось здесь и цикл не зависал в internet explorer?

melky 22.11.2011 21:30

сделать этот цикл с паузами (таймаутами)

правда это существенно увеличит время выполнения

trikadin 23.11.2011 00:15

melky, да не особо. Пять-десять тысяч проходов любой браузер вполне выдержит (если, конечно, он там не числа фиббоначи больше тысячи вычисляет :D). И двести раз прогнать таймаут... Ничего серьёзного))

melky 23.11.2011 00:19

Цитата:

Сообщение от diprom (Сообщение 138405)
Скажите, написав банальную функцию
function a()
{
for i =0; i < 1000000; i++)
//что-то делаем
}


Цитата:

Сообщение от trikadin (Сообщение 138463)
И двести раз прогнать таймаут... Ничего серьёзного))

не пахнет двумя стами :)

может на 5 секунд задержися.. а может и на часок.. он то код в IE исполняет ;)

trikadin 23.11.2011 00:44

Цитата:

Сообщение от melky
не пахнет двумя стами

Если по 5к итераций в цикле - то ими пахнет.

var str="bla-bla"; time= +(new Date()), j=0;
var interv= setInterval(function(){
 for (var i=0; i!=5000; ++i){
  str= str.replace(/bla/g, "hren");// нормальный образец проводимых изменений.
  str= "bla-bla";
 };
 if(++j == 200) {
  clearInterval(interv);
  alert(+(new Date()) - time); // у меня - 927, меньше секунды
 };
}, 0)


Часовой пояс GMT +3, время: 08:35.