Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Пауза в JS (https://javascript.ru/forum/misc/3123-pauza-v-js.html)

konstantinopol 20.03.2009 13:25

Пауза в JS
 
Мне надо сделать паузу.
Скрипт работает с ошибкой если нет паузы(alert)
Если я вставляю alert то всё работает превосходно.

setTimeout("setPoints()",10); и window.setInterval("setPoints()",10);

Не рабатают, вернее они работают, но браусэр виснет.
Есть другие альтернативы??

Kolyaj 20.03.2009 13:36

Браузер не виснет из-за setTimeout.

konstantinopol 20.03.2009 13:39

Но если я его убераю всё перестаёт висеть

konstantinopol 20.03.2009 13:44

Блин это полная жопа.
Часть работает правильно, а часть начинает работать только после двойного нажатия на кнопку.
aaaaaaaaaaaaaaaaaaaaaaaa

Kolyaj 20.03.2009 14:08

Причину в другом ищите.

konstantinopol 20.03.2009 14:27

Я уже понял что это не пауза. Но ...

AzriMan 20.03.2009 15:34

может быть Вы покажете код, который приводит к этим подвисаниям? а то знаете, экстрасенсы сейчас отдыхают на югах..

konstantinopol 26.03.2009 14:14

Продолжение темы:
Всё работает включая setTimeout и window.setInterval
Но как мне сделать паузу в посередине функции. У меня процессы идут паролельно и array неуспевает заполнится данными.
Надеюсь вы поняли что я хотел узнать ...

Gvozd 26.03.2009 14:17

в JS нету паузы.
более того в JS нету потоков.
и нету паралельно идущих событий
все события происходят по очереди, но при этом создается иллюзия многопоточности его работы.
на самом деле это не так

konstantinopol 26.03.2009 14:25

Ну а что нащет вчерашнего случая с таблицей??
Так же у меня и array не успевает заполниться только отдельно на него я паузу поставить немогу ...

Gvozd 26.03.2009 14:34

вообще-то там не было многопоточности.
а было следующее:
вы вызвали функцию, отправляющую запрос на сервер.
функция выполнилась, и в данный момент никакого JS-а не выполняется.
то, что в это время обрабатывается запрос на сервер, JS-а не касается.
когда приходит результат, вызывается обработчик события onreadystatechange, который и обрабатывает запрос.
в момент между отправлением запроса, и приходом результат, в случае асинхронного JS можно выполнить какую-то другую функцию.
если она будет длится достаточно долго, то может произойти так, что результат с суревера уже пришел,но еще не был обработан.
пока не освободится очередь JS, запрос не будет обработан соответствующим обработчиком события.но как только освободится очередь, он будет выполнен.
также и задержка выполнения не гарантирует вызова через указанный промежуток времени.
она гарантирует вызов через время не меньшее указанного промежутка.если будет очередь выполнения, он просто станет в очередь, и будет ждать
для более подробного ознакомления с этими процессами,почитайте статью

konstantinopol 26.03.2009 15:06

Вот мне нужна такая фигня которая раболабы как alert, только не выводилось бы на экран.
С alert в нужном месте всё работает.

Gvozd 26.03.2009 15:13

вы неправильно рассуждаете.
то, что вы хотите сделать при помощи алерта, также можно сделать без него навреняка.
начиная от повешения на settimeout, и заканчивая добавлением своего кода к обработчику события прихода результата с сервера.
более того второй предпочтительней, потому что заранее неизвестно сколько будет обрабатыватся запрос.
то, что вы хотите сейчас сделать это лиш "костыли", причем костыли очень плохие.
можно,если хотите просто поставить цикл на пару тысяч итераций.
он задержит выполнения, как это сделал бы алерт.
но это неправльный подход.
разберитесь в google-API, и выясните, как добавить свой обработчик события к ихнему событию.
это единственно правильный вариант решения

AzriMan 26.03.2009 17:46

Цитата:

Сообщение от Gvozd (Сообщение 15298)
можно,если хотите просто поставить цикл на пару тысяч итераций.
он задержит выполнения, как это сделал бы алерт.

не успев дочитать до этого предложения захотелось написать: "да сделай себе почти бесконечный цикл и радуйся".

sergey390 24.02.2014 14:51

посмотрите на этом сайтк http://learn.javascript.ru/settimeout-setinterval#повторение
 
посмотрите здесь


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