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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> window.setTimeout. Нужен ли window, Если не сохраняем идентификатор таймера 
:(
    Опции темы
dsCode
Дата 24.9.2007, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 565
Регистрация: 8.9.2007
Где: Saint-Petersburg

Репутация: 19
Всего: 26



AKS
Цитата(AKS @  24.9.2007,  19:07 Найти цитируемый пост)
Очень смешной был эффект - браузер, как бы извиняясь, предлагал: "Ребят, я тут задержался малость, но сейчас все сходу наверстаю!". 
А IE и Opera выполняли себе стабильно через те промежутки времени, которых им хватало на обработку функций, вызванных ранее.
Происходит это потому, что в Gecko есть такая фишка. Браузер высчитывает время задержки, если таковая случилась, и видимо где-то там в своих "поторохах" сохраняет для вот таких вот описанных выше "эффектов", т.е. вычесть эту задержку из имеющегося интервала, чтобы "нагнать упущенное". Кстати, это время задержки передается первым аргументом в функцию, которая в свою очередь была передана методам setTimeout/setInterval

да, это я уже заметил в предыдущем посте (там, где updated). За пример - спасибо. Действительно, такой параметр приходит, причем первым, - и только в FF. Для IE и Opera - undefined.

Цитата(AKS @  24.9.2007,  19:07 Найти цитируемый пост)
(на это мне Zeroglif открыл глаза, показав где об этом прочесть)

покажите и мне, если не затруднит =) тоже интересно )

Цитата(AKS @  24.9.2007,  19:07 Найти цитируемый пост)
А IE и Opera выполняли себе стабильно через те промежутки времени, которых им хватало на обработку функций, вызванных ранее.

не совсем понятно. Такое ощущение, что IE и Опере по-барабану на это "упущенное время", они "тупо" начинают выполнять setInterval'ы и setTimeout'ы после "освобождения ресурсов", потому что и в IE и в Опере - отсчет начинался с 0 - "согласно расписанию", а в FF - тоже с 0 (а не с 17, как выяснилось в моей последней поправке), но - с "учетом потерянного времени", которое, как оказалось - передалось первым параметром! Хм... +1.

Добавлено через 13 минут и 10 секунд
Цитата(AKS @  24.9.2007,  20:04 Найти цитируемый пост)
(в данный момент пишу о случае с одинаковыми интервалами)

а что насчет неодинаковых интервалов?


--------------------
the .code inside
:my music
PM MAIL WWW ICQ Jabber   Вверх
AKS
Дата 24.9.2007, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


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

Репутация: 27
Всего: 52



Цитата(dsCode @  24.9.2007,  20:05 Найти цитируемый пост)
покажите и мне, если не затруднит

Да чего же тут трудного smile, пожалуйста - Creating time delays.
Цитата(dsCode @  24.9.2007,  20:05 Найти цитируемый пост)
Такое ощущение, что IE и Опере по-барабану на это "упущенное время"

А что, так и есть. Выполняют код, когда движок освободится (он же single-threaded как-никак).

Цитата(dsCode @  24.9.2007,  20:05 Найти цитируемый пост)
а что насчет неодинаковых интервалов? 

Да незнаю пока - не сталкивался...


Это сообщение отредактировал(а) AKS - 24.9.2007, 20:20
PM MAIL   Вверх
Zeroglif
Дата 24.9.2007, 20:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 28
Всего: 66



Другая ссылка про lateness.
И ещё.
И ещё.

Правда, на мой взгляд это никак не объясняет поведение setInterval в коде dsCode.

Это сообщение отредактировал(а) Zeroglif - 24.9.2007, 20:58
PM MAIL WWW   Вверх
cruelangel
Дата 24.9.2007, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 4
Всего: 8



использование window.setTimeout - это как-то не в ооп стиле smile для полноты картины предлагаю использовать:

var func= function( ){ alert( 1 ) };
window.exec( func );
PM MAIL   Вверх
AKS
Дата 24.9.2007, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


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

Репутация: 27
Всего: 52



Цитата(Zeroglif @  24.9.2007,  20:33 Найти цитируемый пост)
Другая ссылка про lateness. 

Вот как-раз, чтобы поправить вот это:
Цитата(dsCode @  24.9.2007,  20:05 Найти цитируемый пост)
Действительно, такой параметр приходит, причем первым, - и только в FF.

Не обязательно первым, а первым "свободным индексом" в объекте аргументов.


Цитата(cruelangel @  24.9.2007,  20:47 Найти цитируемый пост)
window.exec( func ); 

window.execScript может быть? А как им заменить window.setTimeout?


Это сообщение отредактировал(а) AKS - 24.9.2007, 20:54
PM MAIL   Вверх
cruelangel
Дата 24.9.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 4
Всего: 8



window.exec= function( func ){
    return func( );
}

smile заменить, конечно не сможет, зато запуск функции с задержкой и без оной будут производиться однотипно - через window

Это сообщение отредактировал(а) cruelangel - 24.9.2007, 21:15
PM MAIL   Вверх
SelenIT
Дата 24.9.2007, 21:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Цитата(Zeroglif @  24.9.2007,  20:33 Найти цитируемый пост)
это никак не объясняет поведение setInterval в коде dsCode

Вот только хотел спросить: как эта задержка может быть отрицательной? Я добавил в пример dsCode вывод arguments[0] - если для первой итерации она составляет порядка 8000 мс, то к 15-й при некоторых запусках постепенно уменьшается до отрицательной величины -4000 - -6000. Далее, по идее, должен идти штатный режим, но и при нем задержка то колеблется в пределах ±15 мс около нуля, а то... около -1000. Получается, что таймер "заодно" выполняет и следующую итерацию - ради оптимизации рендеринга, что ли? Или это артефакт? Как объяснить эту странность?

Это сообщение отредактировал(а) SelenIT - 24.9.2007, 22:10


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Zeroglif
Дата 24.9.2007, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 28
Всего: 66



Цитата(SelenIT @  24.9.2007,  22:31 Найти цитируемый пост)
Получается, что таймер "заодно" выполняет и следующую итерацию - ради оптимизации рендеринга, что ли?

Получается, что таймер ждёт, когда откроется форточка, чтобы в неё влезть, но, если в IE до её открытия в очереди стоит всего одно "переждавшее" действие, то в FF - все "переждавшие" по времени к моменту открытия форточки. Поэтому к выходу из loop-а никто ничего ещё не сделал, но уже приготовился сделать - IE приготовился изменить innerHTML(IE) один раз, FF несколько раз подряд. Так примитивно выглядит со стороны (найти бы того, кто почитает код симанки...).

Вот ещё странности со сдвоенными setInterval, там же очередная ссылка на багзилу.
PM MAIL WWW   Вверх
SelenIT
Дата 24.9.2007, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



Zeroglif, с "переждавшими" действиями более-менее понятно, но все-таки, откуда могут взяться "отрицательные" задержки? Неужели таймер пытается "втиснуть" в эту открывшуюся "форточку" не только все "переждавшие" действия, но и пару-тройку "недождавших" (как бы "на всякий случай, а то когда еще придется...")? Или же они - мой личный глюк?


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
Zeroglif
Дата 24.9.2007, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 28
Всего: 66



Цитата(SelenIT @  25.9.2007,  00:07 Найти цитируемый пост)
откуда могут взяться "отрицательные" задержки?

don't know
PM MAIL WWW   Вверх
AKS
Дата 25.9.2007, 07:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


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

Репутация: 27
Всего: 52



Цитата(SelenIT @  24.9.2007,  23:07 Найти цитируемый пост)
Неужели таймер пытается "втиснуть" в эту открывшуюся "форточку" ...? Или же они - мой личный глюк? 

Это их глюк. У них же там бардак полнейший! Вот, например из ссылок Zeroglif'а, первый рапорт об аргументе с задержкой датирован 1999 годом. Пишут: "Надо бы сделать одно из двух - убрать эту отладочную ин-фу, или хотя бы задокументировать". Потом, 2004 год: "Посмотрели, поискали - оказалось, что до сих пор не задокументировали". С интервальными глюками, так вообще - полгода писали-писали другу другу, в конце концов Брендан: "Кто-нибудь займитесь этим глюком - у меня нету времени!". Ну вот и занимаются до сих пор... 
Короче говоря, то ли для них это серьезная проблема, что решить никак не могут, то ли просто плюнули на это все. А что вообще ждать от бесплатного софта? smile
В этом плане IE, все эти годы работая без подобных проблем, и уже, как многие считают, находясь в "преклонном возрасте", выглядит молодцом. Честь и хвала разработчикам IE, которые написали такой стабильный в этом плане движок!
PM MAIL   Вверх
cruelangel
Дата 25.9.2007, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 4
Всего: 8



// Leave an extra slot for a secret final argument that
// indicates to the called function how "late" the timeout is.

хакеры, блин Ж-)


> Честь и хвала разработчикам IE, которые написали такой стабильный в этом плане движок! 

в каком плане?

Это сообщение отредактировал(а) cruelangel - 25.9.2007, 11:03
PM MAIL   Вверх
AKS
Дата 25.9.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Участник форума
**


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

Репутация: 27
Всего: 52



cruelangel, в каком плане? Специально дошел до тавтологии, да еще и выделил курсивом, чтобы акцентировать мысль на том, что обсуждалось. Поясню.
Всем этим "недоразумения" с Gecko'вским поведением в плане setInterval, я решил противопоставить IE'шную стабильность. Просто IE никогда не давал мне повода беспокоиться о том, что в каком-нибудь dhtml у меня появятся явные проблемы, вроде "тормозов" или "аритмии", ну или еще чего. Вот за это и спасибо разрабам IE.

Мне, на самом деле, без разницы - IE, Gecko, Opera. Просто на форумах большинство "балдеет" от FF, незабывая "пнуть" IE. "Текут слюни и сопли" от современных "классных" возможностей FF, при этом народ не знает, что есть "копнуть" FF, то окажется, что "нутро гниловато" - древнейшие баги не исправлены. 
У всех, конечно же, свои недостатки. Но есть и отлично реализованные возможности. Почему бы об этом не сказать пару добрых слов? Даже в адрес не "модного" браузера...

Это сообщение отредактировал(а) AKS - 25.9.2007, 14:11
PM MAIL   Вверх
Ghirik
Дата 25.9.2007, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 13
Всего: 20



Цитата

Даже в адрес не "модного" браузера...


А я IE люблю, smile для людей сделан, а не для программистов. smile 

Не примите смайлик на свой счет... smile 

Это сообщение отредактировал(а) Ghirik - 25.9.2007, 14:37


--------------------
Отдадим всё клиенту, пускай его машина мучается...

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


Опытный
**


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

Репутация: 4
Всего: 8



и в чём же тут баг? вполне логичное поведение. если задал период в 1 секунду - получи 10 срабатываний за 10 секунд. если разработчик написал функцию, которая за эту секунду не успевает отработать - получай тормоза.



Это сообщение отредактировал(а) cruelangel - 25.9.2007, 17:35
PM MAIL   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




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


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

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