Skip to content

Commit 71fa440

Browse files
committed
02-delay
1 parent 151cc2b commit 71fa440

2 files changed

Lines changed: 15 additions & 16 deletions

File tree

1-js/06-advanced-functions/09-call-apply-decorators/02-delay/solution.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
The solution:
1+
Решение:
22

33
```js run demo
44
function delay(f, ms) {
@@ -11,22 +11,22 @@ function delay(f, ms) {
1111

1212
let f1000 = delay(alert, 1000);
1313

14-
f1000("test"); // shows "test" after 1000ms
14+
f1000("test"); // показывает "test" после 1000 мс
1515
```
1616

17-
Please note how an arrow function is used here. As we know, arrow functions do not have own `this` and `arguments`, so `f.apply(this, arguments)` takes `this` and `arguments` from the wrapper.
17+
Обратите внимание, как здесь используется функция-стрелка. Как мы знаем, функция-стрелока не имеет собственных `this` и `arguments`, поэтому `f.apply(this, arguments)` берет `this` и `arguments` из обёртки.
1818

19-
If we pass a regular function, `setTimeout` would call it without arguments and `this=window` (assuming we're in the browser).
19+
Если мы передадим обычную функцию, `setTimeout` вызовет ее без аргументов и `this = window` (при условии, что код выполняется в браузере).
2020

21-
We still can pass the right `this` by using an intermediate variable, but that's a little bit more cumbersome:
21+
Мы все еще можем передать правильное `this`, используя промежуточную переменную, но это немного громоздко:
2222

2323
```js
2424
function delay(f, ms) {
2525

2626
return function(...args) {
27-
let savedThis = this; // store this into an intermediate variable
27+
let savedThis = this; // сохраняем this в промежуточную переменную
2828
setTimeout(function() {
29-
f.apply(savedThis, args); // use it here
29+
f.apply(savedThis, args); // используем её
3030
}, ms);
3131
};
3232

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,25 @@
1-
importance: 5
1+
важность: 5
22

33
---
44

5-
# Delaying decorator
6-
7-
Create a decorator `delay(f, ms)` that delays each call of `f` by `ms` milliseconds.
5+
# Задерживающий декоратор
86

7+
Создайте декоратор `delay(f, ms)`, который задерживает каждый вызов `f` на` ms` миллисекунд.
98
For instance:
109

1110
```js
1211
function f(x) {
1312
alert(x);
1413
}
1514

16-
// create wrappers
15+
// создаем обертки
1716
let f1000 = delay(f, 1000);
1817
let f1500 = delay(f, 1500);
1918

20-
f1000("test"); // shows "test" after 1000ms
21-
f1500("test"); // shows "test" after 1500ms
19+
f1000("test"); // показывает "test" после 1000 мс
20+
f1500("test"); // показывает "test" после 1500 мс
2221
```
2322

24-
In other words, `delay(f, ms)` returns a "delayed by `ms`" variant of `f`.
23+
Другими словами, `delay (f, ms)` возвращает вариант `f` с "задержкой на `ms` мс".
2524

26-
In the code above, `f` is a function of a single argument, but your solution should pass all arguments and the context `this`.
25+
В приведенном выше коде `f` - функция с одним аргументом, но ваше решение должно передавать все аргументы и контекст `this`.

0 commit comments

Comments
 (0)