You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/06-advanced-functions/09-call-apply-decorators/03-debounce/task.md
+3-3Lines changed: 3 additions & 3 deletions
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,8 @@ importance: 5
6
6
7
7
The result of `debounce(f, ms)` decorator is a wrapper that suspends calls to `f` until there's `ms` milliseconds of inactivity (no calls, "cooldown period"), then invokes `f` once with the latest arguments.
8
8
9
+
In other words, `debounce` is like a secretary that accepts "phone calls", and waits until there's `ms` milliseconds of being quiet. And only then it transfers the latest call information to "the boss" (calls the actual `f`).
10
+
9
11
For instance, we had a function `f` and replaced it with `f = debounce(f, 1000)`.
10
12
11
13
Then if the wrapped function is called at 0ms, 200ms and 500ms, and then there are no calls, then the actual `f` will be only called once, at 1500ms. That is: after the cooldown period of 1000ms from the last call.
@@ -25,7 +27,6 @@ setTimeout( () => f("c"), 500);
25
27
// debounced function waits 1000ms after the last call and then runs: alert("c")
26
28
```
27
29
28
-
29
30
Now a practical example. Let's say, the user types something, and we'd like to send a request to the server when the input is finished.
30
31
31
32
There's no point in sending the request for every character typed. Instead we'd like to wait, and then process the whole result.
@@ -43,9 +44,8 @@ See? The second input calls the debounced function, so its content is processed
43
44
44
45
So, `debounce` is a great way to process a sequence of events: be it a sequence of key presses, mouse movements or something else.
45
46
46
-
47
47
It waits the given time after the last call, and then runs its function, that can process the result.
48
48
49
49
The task is to implement `debounce` decorator.
50
50
51
-
Hint: that's just a few lines if you think about it :)
51
+
Hint: that's just a few lines if you think about it :)
0 commit comments