renovations
This commit is contained in:
parent
0e9ceb2b3a
commit
150d92f10f
47 changed files with 290 additions and 110 deletions
|
@ -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`.
|
|
@ -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` миллисекунд.
|
|
@ -27,7 +27,7 @@
|
|||
<li>Первое обновление произойдёт сразу (это важно, посетитель тут же видит реакцию на своё действие).</li>
|
||||
<li>Дальше может быть много вызовов (микро-передвижений) с разными координатами, но пока не пройдёт 100мс -- ничего не будет.</li>
|
||||
<li>По истечении 100мс -- опять обновление, с последними координатами. Промежуточные микро-передвижения игнорированы.</li>
|
||||
<li>В конце концов мышь где-то остановится, обновление по окончании очередной паузы 100мс (иначе мы не знаем, последнее оно или нет) сработает с последними координатами.</li>
|
||||
<li>В конце концов мышь где-то остановится, обновление по окончании очередной паузы 100мс сработает с последними координатами.</li>
|
||||
</ol>
|
||||
|
||||
Ещё раз заметим -- задача из реальной жизни, и в ней принципиально важно, что *последнее* передвижение обрабатывается. Пользователь должен увидеть, где остановил мышь.
|
||||
|
|
|
@ -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)` работает нормально.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue