renovations

This commit is contained in:
Ilya Kantor 2015-04-01 19:08:41 +03:00
parent 0e9ceb2b3a
commit 150d92f10f
47 changed files with 290 additions and 110 deletions

View file

@ -2,7 +2,7 @@
[importance 5]
**Напишите функцию `delay(f, ms)`, которая возвращает обёртку вокруг `f`, задерживающую вызов на `ms` миллисекунд.**
Напишите функцию `delay(f, ms)`, которая возвращает обёртку вокруг `f`, задерживающую вызов на `ms` миллисекунд.
Например:
@ -18,6 +18,6 @@ f1000("тест"); // выведет "тест" через 1000 миллисек
f1500("тест2"); // выведет "тест2" через 1500 миллисекунд
```
Иначе говоря, `f1000` -- это "задержанный на 1000мс" вызов `f`.
Упрощённо можно сказать, что `delay` возвращает "задержанный на `ms`" вариант `f`.
В примере выше у функции только один аргумент, но `delay` должна быть универсальной: передавать любое количество аргументов и контекст `this`.

View file

@ -2,7 +2,7 @@
[importance 5]
**Напишите функцию `debounce(f, ms)`, которая возвращает обёртку, которая передаёт вызов `f` не чаще, чем раз в `ms` миллисекунд.**
Напишите функцию `debounce(f, ms)`, которая возвращает обёртку, которая передаёт вызов `f` не чаще, чем раз в `ms` миллисекунд.
"Лишние" вызовы игнорируются. Все аргументы и контекст -- передаются.
@ -22,3 +22,4 @@ setTimeout( function() { f(4) }, 1100); // выполнится
setTimeout( function() { f(5) }, 1500); // игнор
```
Упрощённо можно сказать, что `debounce` возвращает вариант `f`, срабатывающий не чаще чем раз в `ms` миллисекунд.

View file

@ -27,7 +27,7 @@
<li>Первое обновление произойдёт сразу (это важно, посетитель тут же видит реакцию на своё действие).</li>
<li>Дальше может быть много вызовов (микро-передвижений) с разными координатами, но пока не пройдёт 100мс -- ничего не будет.</li>
<li>По истечении 100мс -- опять обновление, с последними координатами. Промежуточные микро-передвижения игнорированы.</li>
<li>В конце концов мышь где-то остановится, обновление по окончании очередной паузы 100мс (иначе мы не знаем, последнее оно или нет) сработает с последними координатами.</li>
<li>В конце концов мышь где-то остановится, обновление по окончании очередной паузы 100мс сработает с последними координатами.</li>
</ol>
Ещё раз заметим -- задача из реальной жизни, и в ней принципиально важно, что *последнее* передвижение обрабатывается. Пользователь должен увидеть, где остановил мышь.

View file

@ -239,7 +239,7 @@ setTimeout(function() {}, 100);
Позапускайте его в различных браузерах. Вы заметите, что несколько первых полосок анимируются с одинаковой скоростью. Это как раз потому, что слишком маленькие задержки таймер не различает.
[iframe border="1" src="setInterval-anim" link edit]
[iframe border="1" src="setinterval-anim" link edit]
[warn]
В Internet Explorer, нулевая задержка `setInterval(.., 0)` не сработает. Это касается именно `setInterval`, т.е. `setTimeout(.., 0)` работает нормально.