Задержка в цикле

 
0
 
JavaScript
ava
fuckerok | 15.11.2004, 07:36
Необходим цикл выполняющийся с задержкой какую-либо операцию.
Вот небольшой пример:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body>
<script language="JavaScript">
for (var i=0; i<=2; i++) {
window.setTimeout("alert('alert с звдержкой 5 сек');", 5000);
}
</script>
</body>
</html>

От скрипта требуеться чтобы он выводил сообщение с задержкой 5 секунд, но всё как обычно тупит, ибо я здесь smile
Скрипт делает следушее.
  • ждёт 5 секунд
  • Выводит 3 сообщения подряд!
Мне надо чтоб выводилось с задержкой в пять секунд, тобишь прошол сыкл по первому кругу ждёт 5 сек, потом идёт по второму ждёт 5 сек и т.д.
Есть ли какая-нибудь тэга типа "спать!", после которой начинаються выполняться другие операторы.
Вообщем помогите сделать :qstn
Kommentare (4)
ava
Domestic Cat | 15.11.2004, 07:58 #
Цитата


<html>

<script language="JavaScript">

function alertIt()

{
      alert("Hello!");
      window.setTimeout("alertIt();", 5000);

}

</script>

<body>

<script language="JavaScript">

alertIt();

</Script>

</body>

</html>



Извиняюсь что делаю как цитату - код почему-то косо постится.
ava
Sardar | 15.11.2004, 10:34 #
"Тупой" задержки как в других языках в JS нет и это правильно! Нельзя отрубить меню и прочие скрипты только потому что твой цикл в данный момент исполняется ;-)
Я уже говогил что setTimeout - запускает новый тред через определённую паузу, при этом код ставящий задержку продолжает исполнение.

Я когда то постил решение для привычных к sleep/usleep людей: http://forum.vingrad.ru/index.php?showtopic=22258&

Там сделанно на основе очереди.

2fuckerok зачем тебе это понадобилось? В твоем топике я запостил рабочий код, не разобрался?

P.S. 2All - JS это не C, не PHP и прочие, здесь нужно думать по друогму. Вообще если в язык добавить мощные операторы со списками, то JS начнёт быть похожим на функциональные языки.
ava
fuckerok | 17.11.2004, 06:34 #
А куда делся мой вчерашний пример? smile

Вообщем придумал как сделать цените:

function JoinBot() {
alert("Сообщение выводиться КАЖДЫЕ 3 сикунды");
........
}
function sleep() {
for (i=1; i<=3; i++) window.setTimeout("JoinBot();",3000*i);
}


Раз цикл идёт, а сообщение ждёт, то целеобразно время задержки умножить на i. Таким образом и получиться, что сообщение будет выводиться каждые три сикунды. smile

Только теперь другаю проблема в моём флудерасте, ну раз такие программы незя выкладывать, то прийдёться спрасить где нибудь ещё :(
ava
Sardar | 17.11.2004, 10:20 #
Что бы ты не засорял топики, скопировал твой пост сюда, там же правильный ответ.
http://forum.vingrad.ru/index.php?showtopic=34005
Registrieren Sie sich oder melden Sie sich an, um schreiben zu können.
Unternehmen des Tages
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Mitwirkende
advanced
Absenden