Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   setTimeout() (https://javascript.ru/forum/events/11042-settimeout.html)

Маэстро 04.08.2010 15:42

Цитата:

Сообщение от Gvozd (Сообщение 66255)
Маэстро,
благодаря вам и таким людям как inGray появилось понятие "быдлокодер"

"быдлокодер" говорите... чтож... у меня пропало желание обсуждать с Вами что-либо.

Маэстро 04.08.2010 15:48

Цитата:

Сообщение от Kolyaj (Сообщение 66256)
Если писать через setTimeout, то дальнейшие операции не будут дожидаться окончания "цикла".

Я и говорю, что дальнейшие операции не будут ждать окончания цикла. Это цикл "должен дожидаться" чего-то (проверять условие) и по условию запускать следующее действие. Вот это действие и будет условно говоря ждать окончание цикла.
Показываю:
http://gigalit.com.ua/test/test2.htm

<div id="test" style="position:absolute; left:10px; top:80px; width:100px; height:100px; background-color:#8888FF"> </div>
<iframe id="frame1" name="frame1" style="position:absolute; left:0px; top:200px; width:100%; height:300px;"></iframe>
<a target="frame1" href=http://javascript.ru>qwerty</a><br>
<a target="frame1" href=http://ukr.net>zxcvbn</a>
<script type="text/javascript">
var xxx = 0;
function mama()
{
var o = document.getElementById('test');

xxx = xxx + 50;
if (xxx > 500)  xxx = 0;

o.style.left = xxx;
}

setInterval('mama()',500);
</script>

Маэстро 04.08.2010 16:43

Цитата:

Сообщение от Kolyaj (Сообщение 66251)
А почему он не должен зависнуть? В вечном цикле он будет что-то делать, выполняется всё в одном потоке, поэтому браузер больше ни на что не отвечает.
В JavaScript такой код невозможен.

Вот Вам вечный цикл http://gigalit.com.ua/test/test2.htm
-при этом броузер продолжает работать (воспринимает клики по ссылкам)

Kolyaj 04.08.2010 16:54

Цитата:

Сообщение от Маэстро
Вот Вам вечный цикл http://gigalit.com.ua/test/test2.htm

В общепринятом понимании это не цикл. Хотите называть это циклом -- пожалуйста, но предупреждайте всех заранее, что вы понимаете под словом цикл. Сообщение, которое вы пытаетесь опровергнуть, писалось про обычные циклы for/while/do-while.

inGray 04.08.2010 17:05

Цикл - это повторяющийся набор команд, разве нет?

Kolyaj 04.08.2010 17:12

Цитата:

Сообщение от inGray
Цикл - это повторяющийся набор команд, разве нет?

Я понял, что вы хотели сказать, но плохо выразились. Повторяющийся набор команд вот
f();
f();
f();
f();

Это не цикл.

То, что вы упорно пытаетесь назвать циклом, ближе к рекурсии, нежели к циклу. Если вы рекурсию считаете циклом, то да, это тоже цикл. Но я рекурсию циклом не считаю.

inGray 04.08.2010 17:19

Нет.. это не рекурсия... И не цикл) Пусть так) Что это тогда? Условный переход goto на метку? )

Маэстро 04.08.2010 17:50

Цитата:

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

Да ёлы-палы! Кроме собственного "Я" есть ещё какие-то авторитеты?
Под циклом понимается периодическое повторение чего-то одинакового...
Привожу цитату из авторитетного источника:
Цикл — разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Также циклом может называться любая многократно исполняемая последовательность инструкций, организованная любым способом (например, с помощью условного перехода).

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

setInterval('mama()',500); - это тоже цикл. но без while.

Kolyaj 04.08.2010 17:57

Маэстро,
рекурсия тоже цикл?

Маэстро 04.08.2010 18:12

Цитата:

Сообщение от Kolyaj (Сообщение 66296)
Маэстро,
рекурсия тоже цикл?

Рекурсию лично я циклом не считаю. Но что меняет моё мнение? Не хочу спорить и не буду.
Автор поста написал:
"...нельзя сделать паузу. Как тогда поступать в таких случаях?"
Ему предложили методы/способы решения. А как они называются - ему всё-равно... хоть "розовые слоники".


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