![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Ну вот зачем, скажете вы, мне sleep в JS. Правильно незачем. А зачем он может понадобится - правильно, не понадобится
А, всеравно, хочется иметь sleep! Определимся хоть в одном "для чего". А вот хочется рассматривать страницу и результаты тестингов в промежуточных точках останова. Однако есть alert, confirm и prompt. Это и есть настоящий кривой Sleep. Ура! Они даже независимые setInterval/Timeout останавливают. Но увы, полно кривизны. Если есть скроллинг страницы, то они его заморозят, если в alert выводится много, то и он выйдет за размер экрана, правда какая-то бродилка делает скроллинг самого алерта, но это какая-то, а не все, да и размер его тогда уже на всю страницу и под ним ничего не видно. Да и выкладывать в alert как-то не очень, даже через функцию... Преимущество - смотрю сколько захочу, пока не нажму на кнопку (их отображения еще двигать надо, чтоб страницу рассмотреть - гемор). Можно не рекурсией, а чтоб не переполнить память циклом загрузить ЦП на 99,9 процессор на какое-то время (не по событию, они тоже морозятся). Опять же умирает скроллинг (!!!) и еще я завязан на время, вдруг меня эта точка останова не интересует, а на другой хочется задержаться подольше. Ну и как понизить степень описанной кривизны? Вот: Вкладываем в окно нужные тестинги, срисовываем его и кидаем в дочернее окно, а исследуемое грузим sleep`ом через confirm("Продолжим колбаситься, друг?"). Вернее я использую prompt, чтоб иметь возможность прервать все последующие тестинги разом. Ну как мысль? Другого в JS пока ничего не подметил. -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Правда есть одна фишка.
При просмотре нельзя использовать режил табов (режим вкладок) в Gecko они морозятся напроч, как переключение между ними, так и скроллинг страницы. Это не распространяется на Maxthon и MyIE, но там переключатся между закладками можно либо клавиатурой, либо скроллингом мыши при наведении на панель табов, но никак не кликом мыши по табам. И alert, confirm и prompt там вывешивается глобально над всеми закладками и их приходится двигать при просмотре страниц. Наверно не раз наблюдали картину, когда при запуске сразу нескольких страниц во вкладках какая-то с alert напрягает просмотр. А еще поди определи с какой она страницы Добавлено @ 10:11 В смысле вываливаются алерты -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| diam |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 348 Регистрация: 23.1.2005 Где: Екатеринбург Репутация: 6 Всего: 16 |
Вообще-то, так и не понял: зачем в JavaScript нужен sleep?
Если можно, пример. Если можно, более подробный, чем
|
|||
|
||||
| sergejzr |
|
|||
![]() Un salsero Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 10 Всего: 360 |
Используй дибаггер и будет счастье
Останавливает там, где скажешь. Значения всех переменных просматриваются и меняются в любой момент времени. Вот ссылка на venkman для лисы: http://www.mozilla.org/projects/venkman/ |
|||
|
||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
Не всегда. В NN старом есть баг, связанный с этим :-) |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Aliance, в случае самодельного тестера (рука не поднимается назвать дебаггером), это не страшно, но за инфу спасибо
-------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Иль скажи мне, зачем тебе нужен usleep как в C, который заморозит текущий тред? Нет не сразу отвечай, а подумай
Надо выводить результаты каких то бесконечных вычислений? Ставим на setInterval, снимаем снепшот небходимых значений, делаем сними что нибудь. ПРавда нужно помнить что бродилки в плане JS не мультизадачны, если где то запустил бесконечный цикл, то ты вряд ли поднимешь функцию по setInterval. Надо подождать в какой то точке останова несколько секунд? Бьём длинющую функцию на несколько в каждой точке останова, ставим следующую на таймаут. Не красиво? Ну надо привыкнуть -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
ИМХО никак нельзя потому что неудобно, если я правильно все понял и если говорить о дебагере/редакторе средствами JS+.... Это ограничивает по времени просмотра, тк тайминги задаются уже строго, а также уродует код, что обязательно приведет к ошибкам из-за "забыл исправить". Внедрение остановок по клику мыши становится очень муторным (лень жуткая, хотя пара регов и вперед), еще тогда никак не сделать останов в середине функции - можно только перед вызовом вложенной. Смысл был в том чтобы делать паузы и рассматривать что на странице и чтоб alert не мешался под ногами, а не просто смотреть переменные и объекты. Я забросил вариант с выкидыванием дочерних окон (обязательно вернусь), но думаю это должно сработать. (текст выложен на правах имхи -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
А интересно было бы иметь sleep на 1 тред
Пусть у нас задача выводить элементы страницы не скопом, а с задержкой, чтобы юзверя мозги не укисли и смогли осмотреться и воспринять информацию. Пусть этих элементов с сотни две и задержка с 250мс. Что мы сделаем в JS - народим в цикле с 200 тредов и выкинем их скопом с разной сгенерированной задержкой. А что бы мы сделали с таким вот sleep - выкинули бы один тред, который не грузя систему, потихонечку претворял бы в жизнь по ноде раз в 250мс. Это так, фантазии... -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Не смог отыскать код, который писал в начале прошлого года, там как раз были нужны задержки при отправке пакетов. Фича для мозиллы. Реализовывалось очередью, т.е. ты бьёшь свой вывод на функции, затем добавляешь в очередь, один тред бежит и всё исполняет через время. В функциональном отншении ничем не отличаеться от кучи setTimeout
К сожалению в JS нельзя управять исполнением, елси бы можно было бы как нибудь дотянуться до стека вызовов функций интерпретатора, то можно было бы написать своего менеджера задачь, в котором был бы привычный многим sleep. Но для JS это из области фантастики. Я так понял тебе это нужно не для кода, а для отладки, используй дебаггер. P.S. Venkman написан на JS, надо бы узнать как они реализовали брейкпоинты, хотя бы для мозилыы можно будет это юзать. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Здорово. Отличная идея! -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Несложно предугадать, раз этод дебагер оказался на JS. ИМХО вешается плагин (или как там у них, расширение что ли) на JAVA, который добавляет в браузер методы управления точками останова и перехватывает его работу (классно, sleep организованный через объект браузера) и пишется JS под эти методы. Опять же ИМХО. Воистину, JS язык управления объектами. Вряд ли в Gecko изначально есть такие объекты/методы. -------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
А ведь я, похоже, неправ про навешанные методы/объекты, ведь Venkman, он же ранее Netscape debuger, древняя штукенция. Вроде как вообще первенец.
-------------------- Ты виндусятник?... А я да. |
|||
|
||||
| Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 78 Всего: 317 |
Откуда ты знаешь что он древний? По моему он появился с Gecko. Исполнением управлаяет через какой нибудь особый XPCOM обьект, надо будет посмотреть его сорцы.
-------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
| Иль |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 544 Регистрация: 3.3.2005 Где: Москва Репутация: 2 Всего: 14 |
Древни, древний. Появился от с Нетшкапа и переименовали его со временем. Надо было убить 2 часа и я забрел в БиблиоГлобус (большой книжный маг около КГБ на Лубянской пл). Там выбирая себе справочник по JS (и года не прошло
Добавлено @ 18:04 Sardar, глянеш, не забудь, пожалуйста, расказать. Интересно очень -------------------- Ты виндусятник?... А я да. |
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |