Модераторы: Sardar, Aliance

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> И всетаки Sleep! Как организовать задержку на JavaScript 
:(
    Опции темы
Иль
Дата 14.6.2005, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Ну вот зачем, скажете вы, мне sleep в JS. Правильно незачем. А зачем он может понадобится - правильно, не понадобится smile
А, всеравно, хочется иметь sleep!

Определимся хоть в одном "для чего". А вот хочется рассматривать страницу и результаты тестингов в промежуточных точках останова.

Однако есть alert, confirm и prompt. Это и есть настоящий кривой Sleep. Ура! Они даже независимые setInterval/Timeout останавливают. Но увы, полно кривизны. Если есть скроллинг страницы, то они его заморозят, если в alert выводится много, то и он выйдет за размер экрана, правда какая-то бродилка делает скроллинг самого алерта, но это какая-то, а не все, да и размер его тогда уже на всю страницу и под ним ничего не видно. Да и выкладывать в alert как-то не очень, даже через функцию... Преимущество - смотрю сколько захочу, пока не нажму на кнопку (их отображения еще двигать надо, чтоб страницу рассмотреть - гемор).
Можно не рекурсией, а чтоб не переполнить память циклом загрузить ЦП на 99,9 процессор на какое-то время (не по событию, они тоже морозятся). Опять же умирает скроллинг (!!!) и еще я завязан на время, вдруг меня эта точка останова не интересует, а на другой хочется задержаться подольше.

Ну и как понизить степень описанной кривизны? Вот:
Вкладываем в окно нужные тестинги, срисовываем его и кидаем в дочернее окно, а исследуемое грузим sleep`ом через confirm("Продолжим колбаситься, друг?"). Вернее я использую prompt, чтоб иметь возможность прервать все последующие тестинги разом.

Ну как мысль? Другого в JS пока ничего не подметил.




--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Иль
Дата 14.6.2005, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Правда есть одна фишка.
При просмотре нельзя использовать режил табов (режим вкладок) в Gecko они морозятся напроч, как переключение между ними, так и скроллинг страницы. Это не распространяется на Maxthon и MyIE, но там переключатся между закладками можно либо клавиатурой, либо скроллингом мыши при наведении на панель табов, но никак не кликом мыши по табам. И alert, confirm и prompt там вывешивается глобально над всеми закладками и их приходится двигать при просмотре страниц.
Наверно не раз наблюдали картину, когда при запуске сразу нескольких страниц во вкладках какая-то с alert напрягает просмотр. А еще поди определи с какой она страницы smile . Или как в Gecko они вываливаются колодой одна под одной.
Добавлено @ 10:11
В смысле вываливаются алерты


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
diam
Дата 14.6.2005, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 348
Регистрация: 23.1.2005
Где: Екатеринбург

Репутация: 6
Всего: 16



Вообще-то, так и не понял: зачем в JavaScript нужен sleep?
Если можно, пример. smile
Если можно, более подробный, чем
Цитата
А вот хочется рассматривать страницу и результаты тестингов в промежуточных точках останова.

smile
PM MAIL   Вверх
sergejzr
Дата 14.6.2005, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

Репутация: 10
Всего: 360



Используй дибаггер и будет счастье smile

Останавливает там, где скажешь. Значения всех переменных просматриваются и меняются в любой момент времени.
Вот ссылка на venkman для лисы:
http://www.mozilla.org/projects/venkman/


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Aliance
Дата 16.6.2005, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 55
Всего: 137



Цитата
Однако есть alert, confirm и prompt. Это и есть настоящий кривой Sleep. Ура! Они даже независимые setInterval/Timeout останавливают.

Не всегда. В NN старом есть баг, связанный с этим :-)
PM MAIL WWW ICQ Skype   Вверх
Иль
Дата 16.6.2005, 17:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Aliance, в случае самодельного тестера (рука не поднимается назвать дебаггером), это не страшно, но за инфу спасибо


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Sardar
Дата 17.6.2005, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Иль скажи мне, зачем тебе нужен usleep как в C, который заморозит текущий тред? Нет не сразу отвечай, а подумай smile
Надо выводить результаты каких то бесконечных вычислений? Ставим на setInterval, снимаем снепшот небходимых значений, делаем сними что нибудь. ПРавда нужно помнить что бродилки в плане JS не мультизадачны, если где то запустил бесконечный цикл, то ты вряд ли поднимешь функцию по setInterval.

Надо подождать в какой то точке останова несколько секунд? Бьём длинющую функцию на несколько в каждой точке останова, ставим следующую на таймаут. Не красиво? Ну надо привыкнуть smile JS не задумывался для подобных вычислений, а в первую очередь как обработчик событий. А события и прямые задержки - вещи не совместмые smile


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Иль
Дата 17.6.2005, 10:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Цитата(Sardar @ 17.6.2005, 03:49)
ставим следующую на таймаут. Не красиво?

ИМХО никак нельзя потому что неудобно, если я правильно все понял и если говорить о дебагере/редакторе средствами JS+.... Это ограничивает по времени просмотра, тк тайминги задаются уже строго, а также уродует код, что обязательно приведет к ошибкам из-за "забыл исправить". Внедрение остановок по клику мыши становится очень муторным (лень жуткая, хотя пара регов и вперед), еще тогда никак не сделать останов в середине функции - можно только перед вызовом вложенной. Смысл был в том чтобы делать паузы и рассматривать что на странице и чтоб alert не мешался под ногами, а не просто смотреть переменные и объекты. Я забросил вариант с выкидыванием дочерних окон (обязательно вернусь), но думаю это должно сработать.
(текст выложен на правах имхи smile)


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Иль
Дата 18.6.2005, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



А интересно было бы иметь sleep на 1 тред smile.
Пусть у нас задача выводить элементы страницы не скопом, а с задержкой, чтобы юзверя мозги не укисли и смогли осмотреться и воспринять информацию. Пусть этих элементов с сотни две и задержка с 250мс. Что мы сделаем в JS - народим в цикле с 200 тредов и выкинем их скопом с разной сгенерированной задержкой. А что бы мы сделали с таким вот sleep - выкинули бы один тред, который не грузя систему, потихонечку претворял бы в жизнь по ноде раз в 250мс. smile
Это так, фантазии...


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Sardar
Дата 18.6.2005, 03:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Не смог отыскать код, который писал в начале прошлого года, там как раз были нужны задержки при отправке пакетов. Фича для мозиллы. Реализовывалось очередью, т.е. ты бьёшь свой вывод на функции, затем добавляешь в очередь, один тред бежит и всё исполняет через время. В функциональном отншении ничем не отличаеться от кучи setTimeout

К сожалению в JS нельзя управять исполнением, елси бы можно было бы как нибудь дотянуться до стека вызовов функций интерпретатора, то можно было бы написать своего менеджера задачь, в котором был бы привычный многим sleep. Но для JS это из области фантастики.

Я так понял тебе это нужно не для кода, а для отладки, используй дебаггер.

P.S. Venkman написан на JS, надо бы узнать как они реализовали брейкпоинты, хотя бы для мозилыы можно будет это юзать.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Иль
Дата 18.6.2005, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Цитата(Sardar @ 18.6.2005, 03:30)
т.е. ты бьёшь свой вывод на функции

Здорово. Отличная идея!


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Иль
Дата 18.6.2005, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Цитата(Sardar @ 18.6.2005, 03:30)
Venkman написан на JS, надо бы узнать как они реализовали брейкпоинты, хотя бы для мозилыы можно будет это юзать

Несложно предугадать, раз этод дебагер оказался на JS. ИМХО вешается плагин (или как там у них, расширение что ли) на JAVA, который добавляет в браузер методы управления точками останова и перехватывает его работу (классно, sleep организованный через объект браузера) и пишется JS под эти методы. Опять же ИМХО. Воистину, JS язык управления объектами. Вряд ли в Gecko изначально есть такие объекты/методы.


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Иль
Дата 1.7.2005, 02:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



А ведь я, похоже, неправ про навешанные методы/объекты, ведь Venkman, он же ранее Netscape debuger, древняя штукенция. Вроде как вообще первенец.


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Sardar
Дата 1.7.2005, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бегун
****


Профиль
Группа: Модератор
Сообщений: 6986
Регистрация: 19.4.2002
Где: Нидерланды, Groni ngen

Репутация: 78
Всего: 317



Откуда ты знаешь что он древний? По моему он появился с Gecko. Исполнением управлаяет через какой нибудь особый XPCOM обьект, надо будет посмотреть его сорцы.


--------------------
 Опыт - сын ошибок трудных  © А. С. Пушкин
 Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik
 Оценить мои качества можно тут.
PM   Вверх
Иль
Дата 1.7.2005, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 544
Регистрация: 3.3.2005
Где: Москва

Репутация: 2
Всего: 14



Древни, древний. Появился от с Нетшкапа и переименовали его со временем. Надо было убить 2 часа и я забрел в БиблиоГлобус (большой книжный маг около КГБ на Лубянской пл). Там выбирая себе справочник по JS (и года не прошло smile) вычитал. В учебнике был подробный раздел про отладку и разработку, тамже была вводная в историю. Дык их вообще всего только 2 в природе (еще MS'ский есть)
Добавлено @ 18:04
Sardar, глянеш, не забудь, пожалуйста, расказать. Интересно очень


--------------------
Ты виндусятник?... А я да. smile
PM MAIL ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0960 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.