| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > Пауза на JavaScript. (Mozilla only) |
| Автор: Sattu 2.5.2004, 13:06 | ||||
| Здраствуйте. Уважаемые господа, как корректно и красиво реализовать субж только для Mozilla? Я пробовал так: 1)
Но даный метод очень сильно нагружает баузер. 2)
Все равно делает не то... выводит: first third (пауза) second (вытирая две предыдущие строки) Как сделать правильно? |
| Автор: Sardar 2.5.2004, 17:02 | ||||||
Так, разберемся что ты хочешь сделать! Мне так кажется что ты хочешь что бы некий текст добавлялся в конец страницы через паузу(usleep...) и возможно дальше идет остальная часть страницы... window.setTimeout не останавливает процесс выполнения - это правильно
Теперь мы можем поставить любое действие на очередь по времени, т.е. действие выполнится по прерыванию таймера.
|
| Автор: Sattu 3.5.2004, 16:26 |
| Большое тебе, Sardar, человеческое спасибо за очень толковый ответ. Но, к сожалению, я не обьяснил зачем мне это нужно - и ты пошел по ложному пути. Сорри.. Мне это нужно не для HTML, а для XUL (eXtensible User interface Language). На этом "диалекте" XML "пишут" интерфейсы плагинов для Mozill'ы и не только. Я пишу клиент для сервера чатов. Он общается с сервером через сокет с помощью XML-based протокола. Так вот, между посылкой некоторых пакетов нужно делать паузы в несколько секунд. И тут я застрял, никак не могу более-менее реализовать эту паузу Очень нужно чтобы функции выполнялись в строгом порядке до и после паузы. Тоесть чтобы, например, в твоем последнем коде alert() выполнялся после последнего utimer(). Возможно ли вообще такое реализовать на JavaScript? Еще раз спасибо за предыдущий ответ. |
| Автор: Sardar 3.5.2004, 18:31 |
| >Так вот, между посылкой некоторых пакетов нужно делать паузы в несколько секунд. Зачем это для чат-клиента...? Возможно обьект через который ты общаешся с сервером имеет встроенные функции для задержки времени. У xulplanet.com траблы с хостингом, я до справочника не добрался. По любому уснуть как в С, так что бы кнопки перестали реагировать не получится, и это правильно ИМXО. Я думаю что с очередью все получится, ставим отправку пакетов в очередь с задержкой, а последним действием возобновляем выполнение программы. Таймер работает паралельным процессом, т.е. код повешанный на события продолжает исполняться, так что по кнопке "прервать" можно легко очистить очередь.' Подробней опиши задачу, когда и зачем отправляем пакеты, через какие обьекты, как принимается ответ сервера(событие, опрашиваем обьект...) и т.п. Как-нибудь разберемся |
| Автор: Sattu 5.5.2004, 11:43 | ||||||
Да мне и не надо чтобы кнопки не реагировали, просто чтобы скрипт (а не браузер) "засыпал".
Ты прав, по видимому придется использовать очереди.
Я использую библиотеку http://jslib.mozdev.org, вернее только один ее скрипт socket.js. Он разрешает делать базовые операции с сокетом (open, read, write, close). Перестрою принцып работы клиента - и думаю, что всеже удастся обойти паузу. Я просто не очень опытен в JavaScript'е, и иногда пытаюсь решить задачу "в лоб". Но JavaScript требует особого подхода и мышления, к котому, я надеюсь, довольно скоро привыкну |
| Автор: Sardar 5.5.2004, 15:36 | ||
По сути socket.sj оболочка это оболочка для SocketService. Класс юзает только входящий и исходящий поток(метод open), если покопатся в nsISocketTransportService, может там есть функции time-out'а. Но все же логику работы лучше продумать |