Цитата:
Цитата:
Цитата:
Цитата:
Я стараюсь не вводить сущности без особой необходимости. defer упрощает жизнь, periodical -- нет. Цитата:
Цитата:
Ему может фон добавить, чтоб оттенял. |
var timerId; element.onmouseover = function() { timerId = setTimeout(function() { alert(1); }, 2000); }; element.onmouseout = function() { clearTimeout(timerId); }; правильно так: var timerId; element.onmouseover = function() { if( timerId ) return timerId = setTimeout(function() { alert(1); }, 2000); }; element.onmouseout = function() { timerId = clearTimeout(timerId); }; или так: var timerId; element.onmouseover = function() { clearTimeout(timerId); timerId = setTimeout(function() { alert(1); }, 2000); }; element.onmouseout = function() { clearTimeout(timerId); }; |
касательно периодических вызовов, я делаю так:
var clock= Clock().latency( 5000 ).proc( function(){ alert(1) } ).active( true ) полученный таймер мы можем произвольно включать/выключать, менять период и вызываемую функцию. |
В общем разные у нас приоритеты, Kolyaj :) Я в первую очередь стараюсь убрать детали реализации, чтобы было видно что происходит, а не как это работает. А потом решаю проблемы с производительностью, если такие имеются. Потому что это упрощает мне жизнь. И поэтому количество оберток для меня не аргумент
Цитата:
Function.prototype.defer = function( timeout ){ var f = this; return function(){ var actualFunc = f.of(this); actualFunc = actualFunc.pass.apply(actualFunc, arguments); setTimeout( actualFunc, timeout ); } } Цитата:
Цитата:
function onTimer(){ ... onTimer.stopPeriodical(); } Цитата:
Цитата:
|
и еще...
первое событие timer в любом случае "пропадает" Array.prototype.deferForEach = function(delay, fn, finish, scope) { ... if (finish) { finish.call(scope, this); } ... } else { finish.call(scope, this); // finish вызывается, даже если не передан } }; то что нельзя создать два таймера, смещенных по времени - это by design? Просто я не сразу это осознал, несмотря на то, что прочитал "Для каждого интервала создает лишь один экземпляр таймера." Цитата:
|
.defer можно было бы чуть-чуть переписать, чтобы можно было передавать аргументы не в массиве.
foo.defer(100, this, 1, 2); вместо foo.defer(100, this, [1, 2]); |
Цитата:
Вообще, я ж с тобой не спорю. Я раньше точно так же рассуждал, поэтому понимаю твои доводы. Я не говорю, что ты потом будешь рассуждать как-то по другому, просто для меня вариант максимальной абстракции оказался неподходящим. Я ввожу готовые функции, если это 1. Добавляет кроссбраузерности, как например, addEventListener/attachEvent. 2. Сильно упрощает жизнь, как например XMLHttpRequest. Про Timer: основная его функция -- менеджить много таймеров. Т.е. если у тебя на странице будет несколько десятков независимых анимированных объектов, у каждого из которых свой setTimeout, всё будет слегка поттормаживать. А если сделать один setTimeout, который будет вызывать колбэки из каждого объекта, будет полегче. Цитата:
Ещё про тот файлик -- там deferForEach. Мне не нравится список аргументов, чтобы описывать его. Он перебирает элементы массива через заданные промежутки времени. Анимация им в две строчки делается. Цитата:
|
Часовой пояс GMT +3, время: 05:44. |