Last change
on this file since e29cc2e was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago |
initial commit
|
-
Property mode
set to
100644
|
File size:
941 bytes
|
Line | |
---|
1 | /** Used to detect hot functions by number of calls within a span of milliseconds. */
|
---|
2 | var HOT_COUNT = 800,
|
---|
3 | HOT_SPAN = 16;
|
---|
4 |
|
---|
5 | /* Built-in method references for those with the same name as other `lodash` methods. */
|
---|
6 | var nativeNow = Date.now;
|
---|
7 |
|
---|
8 | /**
|
---|
9 | * Creates a function that'll short out and invoke `identity` instead
|
---|
10 | * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`
|
---|
11 | * milliseconds.
|
---|
12 | *
|
---|
13 | * @private
|
---|
14 | * @param {Function} func The function to restrict.
|
---|
15 | * @returns {Function} Returns the new shortable function.
|
---|
16 | */
|
---|
17 | function shortOut(func) {
|
---|
18 | var count = 0,
|
---|
19 | lastCalled = 0;
|
---|
20 |
|
---|
21 | return function() {
|
---|
22 | var stamp = nativeNow(),
|
---|
23 | remaining = HOT_SPAN - (stamp - lastCalled);
|
---|
24 |
|
---|
25 | lastCalled = stamp;
|
---|
26 | if (remaining > 0) {
|
---|
27 | if (++count >= HOT_COUNT) {
|
---|
28 | return arguments[0];
|
---|
29 | }
|
---|
30 | } else {
|
---|
31 | count = 0;
|
---|
32 | }
|
---|
33 | return func.apply(undefined, arguments);
|
---|
34 | };
|
---|
35 | }
|
---|
36 |
|
---|
37 | module.exports = shortOut;
|
---|
Note:
See
TracBrowser
for help on using the repository browser.