Задержка выполнения скрипта на JScript
От: Bob Kotl Россия  
Дата: 24.02.03 11:58
Оценка:
Возникла необходимость задержать выполнение скрипта до того момента, пока не будет выполнено некоторое условие, устанавливаемое извне. Проблема в том, что пока скрипт ждет, должны выполняться и другие функции в этом скрипте. Например:

window.setInterval("some_code", 50);
while (!some_condition) { processMessages(); }


В этом случае some_code через некоторое время производит установку some_condition в true, но срабатывание таймера не происходит, потому как вместо processMessages у меня сейчас ничего не стоит, поэтому скрипт зависает.

Что можно написать вместо processMessages?
Re: Задержка выполнения скрипта на JScript
От: DSD Россия http://911.ru/cv
Дата: 24.02.03 13:14
Оценка: 2 (1)
Здравствуйте, Bob Kotl, Вы писали:

Уже обсуждали.
http://rsdn.ru/Forum/Message.aspx?mid=132908
Автор: DSD
Дата: 16.11.02
--
DSD
Re[2]: Задержка выполнения скрипта на JScript
От: Bob Kotl Россия  
Дата: 24.02.03 13:46
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>http://rsdn.ru/Forum/Message.aspx?mid=132908
Автор: DSD
Дата: 16.11.02

Спасибо, я прочитал, идея с showModalDialog весьма нестандартная и главное, рабочая, но вот как только скрыть это окно? я заводил его далеко-далеко, а оно всё равно видно...
Re[3]: Задержка выполнения скрипта на JScript
От: DSD Россия http://911.ru/cv
Дата: 24.02.03 14:01
Оценка:
Здравствуйте, Bob Kotl, Вы писали:

BK>Здравствуйте, DSD, Вы писали:


DSD>>http://rsdn.ru/Forum/Message.aspx?mid=132908
Автор: DSD
Дата: 16.11.02

BK>Спасибо, я прочитал, идея с showModalDialog весьма нестандартная и главное, рабочая, но вот как только скрыть это окно? я заводил его далеко-далеко, а оно всё равно видно...

А хрен его знает... Похоже оно не скрывается с пределов экрана.
Есть еще пара мыслей по этому поводу, но это уже будет совершенный изврат. Да и неудобно это...
нужно искать другую функцию, которая блокирует поток в контексте текущей функции...
--
DSD
Re[4]: Задержка выполнения скрипта на JScript
От: Bob Kotl Россия  
Дата: 24.02.03 14:13
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, Bob Kotl, Вы писали:


BK>>Здравствуйте, DSD, Вы писали:


DSD>>>http://rsdn.ru/Forum/Message.aspx?mid=132908
Автор: DSD
Дата: 16.11.02

BK>>Спасибо, я прочитал, идея с showModalDialog весьма нестандартная и главное, рабочая, но вот как только скрыть это окно? я заводил его далеко-далеко, а оно всё равно видно...

DSD>А хрен его знает... Похоже оно не скрывается с пределов экрана.

а в принципе, это окно можно превратить в часть интерфейса, например, как в моём случае, писать "Загрузка исходных данных..." ну а что делать, надо же недостатки в достоинства превращать...
DSD>Есть еще пара мыслей по этому поводу, но это уже будет совершенный изврат.
Например?
DSD>нужно искать другую функцию, которая блокирует поток в контексте текущей функции...
боюсь, что кроме showModalDialog, такой нет...
Re[5]: Задержка выполнения скрипта на JScript
От: DSD Россия http://911.ru/cv
Дата: 25.02.03 00:16
Оценка:
Здравствуйте, Bob Kotl, Вы писали:

BK>Здравствуйте, DSD, Вы писали:


DSD>>А хрен его знает... Похоже оно не скрывается с пределов экрана.

BK>а в принципе, это окно можно превратить в часть интерфейса, например, как в моём случае, писать "Загрузка исходных данных..." ну а что делать, надо же недостатки в достоинства превращать...
DSD>>Есть еще пара мыслей по этому поводу, но это уже будет совершенный изврат.
BK>Например?
Например, попытаться управлять окном диалога из него самого. типа window.moveTo()
в любом случае(кроме твоего) диалоги — это не очень удобно, т.к. для открытия диалога один хрен приходится грузить страницу с сервера, что не удобно для создания паузы...

DSD>>нужно искать другую функцию, которая блокирует поток в контексте текущей функции...

BK>боюсь, что кроме showModalDialog, такой нет...
я видел на сайте MS кучу примеров для работы с разными ActiveX-обьектами, "разрешенными" в IE, т.е. теми, которые запускаются без предупреждений безопасности.
Например, был какой-то, типа DirectAnimation или DirectAudio...
в них еще надо покопаться, может и удастся выудить какую-либо функцию, которая происходит с задержкой в текущем контексте...
--
DSD
Re[2]: Задержка выполнения скрипта на JScript
От: Nikto Россия  
Дата: 25.02.03 05:38
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, Bob Kotl, Вы писали:


DSD>Уже обсуждали.

DSD>http://rsdn.ru/Forum/Message.aspx?mid=132908
Автор: DSD
Дата: 16.11.02



Вообщем я нашел решение этой проблемы, которое мне подошло. Нужен СОМ объект с одним методом:
STDMETHODIMP CProba::Delay(LONG count)
    {
    MSG msg;
        for (int i=0;i<count;i++)
            {
            if (::PeekMessage(&msg,NULL,0,0,PM_REMOVE))
                ::DispatchMessage(&msg);
            }

    return S_OK;
    }


Использование:
while (!some_condition) { obj.Delay(2);}


Проблемы на сколько я понимаю 2:
1.) Вопрос при первой загрузке сайта типа: "На этой странице есть ActiveX... хотите ли вы его установить? " Или что-то в этом роде.
2.) Размер СОМ объекта(с ATL) ~40 кил. Правда качать его придется только один раз.

В моем проекте ни одна из этих проблем не актуальна, поэтому я с этим особенно не заморачивался, однако есди сильно надо, 2-ю проблему можно несколько уменьшить(раз так в 10), если писать не используя ATL, а если писать компоненту на ассемблере(вроде такое тоже можно), то видимо еще раз в 10 меньше получится.
Re[3]: Задержка выполнения скрипта на JScript
От: DSD Россия http://911.ru/cv
Дата: 25.02.03 16:58
Оценка:
Здравствуйте, Nikto, Вы писали:

N>Вообщем я нашел решение этой проблемы, которое мне подошло. Нужен СОМ объект с одним методом:

ActiveX'ы мы уже давно обсуждали — это не выход.
--
DSD
Re[4]: Задержка выполнения скрипта на JScript
От: Nikto Россия  
Дата: 26.02.03 02:59
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, Nikto, Вы писали:


N>>Вообщем я нашел решение этой проблемы, которое мне подошло. Нужен СОМ объект с одним методом:

DSD>ActiveX'ы мы уже давно обсуждали — это не выход.

Во-первых кому как . Во-вторых суть в том что если ты напишешь вместо этого кода в методе например Sleep(n), то у тебя ничего работать не будет...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.