-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathThrottle.js
More file actions
41 lines (40 loc) · 830 Bytes
/
Throttle.js
File metadata and controls
41 lines (40 loc) · 830 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/**
* @param {Function} fn
* @param {number} t
* @return {Function}
*/
var throttle = function(fn, t) {
let called = false;
let nextargs = null;
return function(...args) {
if (called)
{
nextargs=args;
}
else
{
fn(...args);
called=true;
setTimeout(helper,t);
}
function helper()
{
if(nextargs)
{
fn(...nextargs);
called=true;
nextargs=null;
setTimeout(helper,t);
}
else
{
called=false;
}
}
}
};
/**
* const throttled = throttle(console.log, 100);
* throttled("log"); // logged immediately.
* throttled("log"); // logged at t=100ms.
*/