setTimeout()
Собственно:
setTimeout('...', 1000); wrapper.parentNode.removeChild(wrapper); eclipse.parentNode.removeChild(eclipse); Пока работает таймер - функции должны ждать. Можно ли так сделать? P.S. Обыскал инет - сказали, что нельзя сделать паузу. Как тогда поступать в таких случаях? Спасибо. |
setTimeout(function() { wrapper.parentNode.removeChild(wrapper); eclipse.parentNode.removeChild(eclipse); }, 1000); |
Цитата:
|
setTimeout(function(){ ...// то, почле чгео должный выоплнится остальные функции wrapper.parentNode.removeChild(wrapper); eclipse.parentNode.removeChild(eclipse); }, 1000);DjTarik, ты высасываешь проблему из пальца |
Цитата:
1. Сначала будет таймер. 2. Потом идут функции. Было так: setTimeout('...', 1000); wrapper.parentNode.removeChild(wrapper); eclipse.parentNode.removeChild(eclipse); Пробовал так: setTimeout('...', 1000); setTimeout( function() { wrapper.parentNode.removeChild(wrapper); eclipse.parentNode.removeChild(eclipse); }, 2000); Но это не вариант, т.к. я не могу точно знать, сколько времени потребуется на первый таймер. Мне нужно - выполнить функцию после того, как отработал таймер. В моём случае - изменение прозрачности, потом удаление объекта. |
Цитата:
именно так и делают все нормальные люди ты высасываешь проблему из пальца Цитата:
|
Цитата:
В Вашем случае надо делать систему семафоров. Есть главная функция Х, которая выполняет некую работу (вроде как изменение прозрачности чего-то). Эта функция должна по факту выполнения взвести флажок "я выполнила свою работу". По ходу Вы запускаете setTimeout('Y()', 1000); эта Y раз в секунду проверяет состояние флажка. И, как только он взведён - начинает выполнять свою работу (удаление объекта). В конце Y сбрасывает флажок. |
Цитата:
А про флажки - можно пример? А то мне сказали, что нереально сделать что-то типо паузы. |
Любую задержку можно реализовать циклами.. конечными или бесконечными. В том числе и ожидание семафора.
|
inGray,
то, что браузер зависнет, вас не смущает? |
Если это нужно для целей Автора, то не смущает.
|
Вот же, проблема!
Яваскрипт однопоточный, и код с таймаутом запустится только тогда, когда пройдет нужное время и никакой код не будет выполняться. Т.е., даже если поставить таймаут на 0, он выполнится всегда после того, как отработает функция, вызвавшая это отложенное выполнение. Таким образом, кстати, можно проверять значение value у инпута сразу после keypress. :) |
To subzey
Теоритический интерес: Примерно такой цикл для проверки семафора будет работать? function checkFlag(){ if (flag) { /*действия*/ } else setTimeout(checkFlag,500); } |
Цитата:
только не называйте это циклом, так как это ни разу не цикл |
По конструкции не for и не while
:yes: Но по сути-то цикл? А вообще ответ был дан уважаемым Gvozd, ещё на той странице. |
Поразвелось му#@$ков, не продохнуть! В основах не секут, а лезут.. Учи основы!!!
|
Цитата:
это не цикл. и по сути, даже не цикл. потому что данная конструкция ведет себя отлично от цикла. хотя и похоже на первый взгляд. вы бы еще рекурсией назвали данную конструкцию (разумеется это не рекурсия ни в каком виде) |
Цитата:
|
Простите дурака ) Это был ответ автору по поводу примера
Цитата:
Цитата:
|
А давайте поспорим! Я считаю, что inGray вполне может назвать им написанное ЦИКЛОМ. Кто против? Те кто не видят там for или while??
Ну и что? Цикл - это некое повторяющееся действие... то есть циклически. В этом действии производится проверка УСЛОВИЯ. if () есть? -есть! Что вы придрались? Человеку надо задачу решить, а не придумать название своему скрипту. |
Цитата:
|
Цитата:
while(1); |
Цитата:
Это код ВНУТРИ setTimeout('ABCD()', xxx) не будет выполняться, пока не пройдёт заданное время ххх, т.е. не будет выполняться функция ABCD(). А код, следующий за строкой setTimeout(...), будет выполняться сразу! Вот с этой проблемой и обратился автор поста. |
Цитата:
|
Цитата:
Цитата:
|
Цитата:
|
Маэстро, читайте внимательнее, речи про setTimeout не было:
Цитата:
Цитата:
Цитата:
|
К чему весь этот спор? При реализации циклов через while или for дальнейшие операции не выполняются ожидая завершения цикла - получаем аналог команды sleep (Часть вопроса автора топика). Если цикл писать через setTimeout() другие функции продолжают выполнятся. И браузер будет отвечать на команды пользователя.
|
Маэстро,
благодаря вам и таким людям как inGray появилось понятие "быдлокодер" Цитата:
да, скрипт применительно к данной ситуации рабочий(о чем я уже сказал), но называть его циклом неправомерно |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
Показываю: 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> |
Цитата:
-при этом броузер продолжает работать (воспринимает клики по ссылкам) |
Цитата:
|
Цикл - это повторяющийся набор команд, разве нет?
|
Цитата:
f(); f(); f(); f(); Это не цикл. То, что вы упорно пытаетесь назвать циклом, ближе к рекурсии, нежели к циклу. Если вы рекурсию считаете циклом, то да, это тоже цикл. Но я рекурсию циклом не считаю. |
Нет.. это не рекурсия... И не цикл) Пусть так) Что это тогда? Условный переход goto на метку? )
|
Цитата:
Под циклом понимается периодическое повторение чего-то одинакового... Привожу цитату из авторитетного источника: Цикл — разновидность управляющей конструкции в высокоуровневых языках программирования, предназначенная для организации многократного исполнения набора инструкций. Также циклом может называться любая многократно исполняемая последовательность инструкций, организованная любым способом (например, с помощью условного перехода). Иногда в программах используются циклы, выход из которых не предусмотрен логикой программы. Такие циклы называются безусловными, или бесконечными. setInterval('mama()',500); - это тоже цикл. но без while. |
Маэстро,
рекурсия тоже цикл? |
Цитата:
Автор поста написал: "...нельзя сделать паузу. Как тогда поступать в таких случаях?" Ему предложили методы/способы решения. А как они называются - ему всё-равно... хоть "розовые слоники". |
Часовой пояс GMT +3, время: 07:35. |