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

DjTarik 03.08.2010 22:24

setTimeout()
 
Собственно:

setTimeout('...', 1000);
wrapper.parentNode.removeChild(wrapper);
eclipse.parentNode.removeChild(eclipse);


Пока работает таймер - функции должны ждать.

Можно ли так сделать?

P.S. Обыскал инет - сказали, что нельзя сделать паузу. Как тогда поступать в таких случаях?

Спасибо.

Kolyaj 03.08.2010 22:26

setTimeout(function() {
    wrapper.parentNode.removeChild(wrapper);
    eclipse.parentNode.removeChild(eclipse);
}, 1000);

DjTarik 03.08.2010 23:41

Цитата:

Сообщение от Kolyaj (Сообщение 66180)
setTimeout(function() {
    wrapper.parentNode.removeChild(wrapper);
    eclipse.parentNode.removeChild(eclipse);
}, 1000);

Не прокатит.А если предыдущая функция не успеет завершится за 1000 секунд? А если следующих функций будет 20? Всем ставить таймер не хочется. =(

Gvozd 04.08.2010 00:00

setTimeout(function(){
...// то, почле чгео должный выоплнится остальные функции
wrapper.parentNode.removeChild(wrapper); 
eclipse.parentNode.removeChild(eclipse);
}, 1000);
DjTarik,
ты высасываешь проблему из пальца

DjTarik 04.08.2010 00:10

Цитата:

Сообщение от Gvozd (Сообщение 66189)
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);


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

Мне нужно - выполнить функцию после того, как отработал таймер.
В моём случае - изменение прозрачности, потом удаление объекта.

Gvozd 04.08.2010 00:46

Цитата:

Сообщение от DjTarik
Возможно вы меня не так поняли:

1. Сначала будет таймер.
2. Потом идут функции.

и в чем проблема поместить функции по удалению объекта внутрь таймера, следом за функцией изменения прозрачности?
именно так и делают все нормальные люди

ты высасываешь проблему из пальца
Цитата:

Сами себе придумываем трудности, а потом мужественно их преодолеваем

Маэстро 04.08.2010 02:16

Цитата:

Сообщение от DjTarik (Сообщение 66179)
setTimeout('...', 1000);
wrapper.parentNode.removeChild(wrapper);
eclipse.parentNode.removeChild(eclipse);

Пока работает таймер - функции должны ждать.
Можно ли так сделать?
Как тогда поступать в таких случаях?

Если Ваша ГЛАВНАЯ функция может работать неизвестное количество времени (1-1000 секунд хи-хи), то setTimeout здесь ни причем. После того как пройден оператор setTimeout('...', 1000) - следующая строчка wrapper.parentNode.removeChild(wrapper); выполнится мгновенно!
В Вашем случае надо делать систему семафоров. Есть главная функция Х, которая выполняет некую работу (вроде как изменение прозрачности чего-то). Эта функция должна по факту выполнения взвести флажок "я выполнила свою работу". По ходу Вы запускаете setTimeout('Y()', 1000); эта Y раз в секунду проверяет состояние флажка. И, как только он взведён - начинает выполнять свою работу (удаление объекта). В конце Y сбрасывает флажок.

DjTarik 04.08.2010 10:20

Цитата:

Сообщение от Маэстро (Сообщение 66198)
Если Ваша ГЛАВНАЯ функция может работать неизвестное количество времени (1-1000 секунд хи-хи), то setTimeout здесь ни причем. После того как пройден оператор setTimeout('...', 1000) - следующая строчка wrapper.parentNode.removeChild(wrapper); выполнится мгновенно!
В Вашем случае надо делать систему семафоров. Есть главная функция Х, которая выполняет некую работу (вроде как изменение прозрачности чего-то). Эта функция должна по факту выполнения взвести флажок "я выполнила свою работу". По ходу Вы запускаете setTimeout('Y()', 1000); эта Y раз в секунду проверяет состояние флажка. И, как только он взведён - начинает выполнять свою работу (удаление объекта). В конце Y сбрасывает флажок.

Вроде как setTimeout('...', 1000); начнет выполнение функции через секунду, а в это время объект уже удалится.

А про флажки - можно пример? А то мне сказали, что нереально сделать что-то типо паузы.

inGray 04.08.2010 11:11

Любую задержку можно реализовать циклами.. конечными или бесконечными. В том числе и ожидание семафора.

Kolyaj 04.08.2010 11:39

inGray,
то, что браузер зависнет, вас не смущает?


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