Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать паузу в цикле for? (https://javascript.ru/forum/misc/16910-kak-sdelat-pauzu-v-cikle.html)

ILL-JAH 28.04.2011 01:49

Как сделать паузу в цикле for?
 
Как сделать паузу в цикле for? А то браузер ругается, когда число итераций более 9.999.999.999.

Gvozd 28.04.2011 02:36

что значит "ругается"?

ILL-JAH 28.04.2011 12:59

Вложений: 1
Вот так ругается:

Gvozd 28.04.2011 13:51

в указанном вами примере не нужно 9.999.999.999. итераций.
простые множители вычисляются в худшем случае за корень квадратный
оптимизируйте используемый алгоритм

ILL-JAH 28.04.2011 14:49

Спасибо, конечно, но это не ответ на мой вопрос. Могу переформулировать: существует ли возможность принудительно ПРИостанавливать работу скрипта и цикла в частности? Существует ли в JavaScript аналог таким инструкциям из других языков, как pause или wait?

poorking 28.04.2011 14:58

нет, нельзя так, есть setTimeout и setInterval, но они выполнение кода не останаливают, а откладывают действие на некоторое время, а следующий код выполняется дальше

melky 28.04.2011 15:16

та не. можно

но это "можно" загрузит проц на 100%

function sleep (m) {var then = new Date(new Date().getTime() + m); while (new Date() < then) {}}



а еще можно было поискать в гугле

я за 5 секунд нашел

???

poorking 28.04.2011 15:28

melky,
Все равно интересно :) сразу подумалось о создании полноценного модального окна, правда которое вешает браузер ))) интересно, на кнопку возможно будет нажать?..

melky 28.04.2011 15:46

если хром, то можно) вкладка зависнет и все. на 5 сек

в мозилле нельзя будет нажать ~ 5 секунд зависнет браузер

в опере хз

а вот в ИЕ.. не знаю :)

у меня баганый IE 9, и ,когда в него заходишь, на экране потом остаются отпечатки от него ( кнопки, контекстные меню ("вставить")


не хочу проверять)) но там,по идее, тоже 5 сек максимум

в сафари хз

она есть..чтобы была)

poorking 28.04.2011 16:09

Проверил в мозилле, не нажать кнопку... Вобщем просто паузы делать покатит, а ожидание до действия не выйдет, увы (

Kolyaj 28.04.2011 16:44

melky,
ну и чем ваш пустой цикл отличается от цикла топикстартера, который он и хочет приостановить?

melky 28.04.2011 17:26

хм. да ничем,получается

браузер все равно будет блочить скрипт

что тогда делать?

я думаю,так :

на каждую итерацию в цикле изменять прогресс и выводить пользователю .

так все равно блокироваться будет?

Андрей38 24.10.2011 18:29

Ребята ,есть обычный цикл
for (var i = 0; i<es.length; i++)
{xxxx}
Подскажите пожайлуста,как впихнуть в {xxxx} setTime или setTimeout.Я хочу,чтоб после обработки каждого елемента найденного циклом,делалась заданная пауза перед следующим проходом.
Ну , и может есть какой-то флаг окончания цикла, ..кто знает?

DjDiablo 24.10.2011 18:38

Да вы чо помешались все с этими циклами ))
Обычно хотят чтобы цикл быстрее работал, а вы наоборот чтобы медленнее :)

вот как вариант
<script>
var i=0;

f=function(){

   // тело цикла
   document.write (i);

   // счётчик и условие исполнения цикла   
   i=i+1; if (i<10) setTimeout(f, "1000");
};

f();
</script>

ksa 24.10.2011 19:03

Цитата:

Сообщение от Андрей38
Я хочу,чтоб после обработки каждого елемента найденного циклом,делалась заданная пауза перед следующим проходом.

Значит циклические конструкции тебе не подойдут...

Андрей38 24.10.2011 20:22

Цитата:

Сообщение от DjDiablo (Сообщение 132612)
Да вы чо помешались все с этими циклами ))
Обычно хотят чтобы цикл быстрее работал, а вы наоборот чтобы медленнее :)

вот как вариант
<script>
var i=0;

f=function(){

   // тело цикла
   document.write (i);

   // счётчик и условие исполнения цикла   
   i=i+1; if (i<10) setTimeout(f, "1000");
};

f();
</script>

СПАСИБО ОГРОМНОЕ!

Андрей38 24.10.2011 20:28

Цитата:

Сообщение от ksa (Сообщение 132619)
Значит циклические конструкции тебе не подойдут...

Спасибо,профессор!
Остаеться each(но по -моему это тоже цикл), регулярки , ОЧЕРЕДЬ и простые средства?
ЧТО из них ?

Андрей38 24.10.2011 21:05

Цитата:

Сообщение от DjDiablo (Сообщение 132612)
Да вы чо помешались все с этими циклами ))
Обычно хотят чтобы цикл быстрее работал, а вы наоборот чтобы медленнее :)

Скажите пожайлуста,что будет быстрее _замена тегов ссылок обходом циклом на JS или регуляркой ?Уже с некоторых пор интересуюсь таким вопросом

ksa 25.10.2011 09:14

Цитата:

Сообщение от Андрей38
Остаеться each

Тебе уже показали пример как это делается...

DjDiablo 25.10.2011 12:49

Цитата:

Скажите пожайлуста,что будет быстрее _замена тегов ссылок обходом циклом на JS или регуляркой ?Уже с некоторых пор интересуюсь таким вопросом.
Если твои теги уже в dom то лучше стандартный подход, через getElement и тд.
Менять dom при помощи регулярок, это как дёргать зубы, через задницу.

Андрей38 25.10.2011 14:25

Спасибо ,гуру!Вас понял отлично!Запомню навсегда:yes:

Андрей38 25.10.2011 14:27

Спасибо,профи


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