ut2 1.18.0 → 1.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/ut2.js +119 -100
- package/dist/ut2.js.map +1 -1
- package/dist/ut2.min.js +1 -1
- package/dist/ut2.min.js.map +1 -1
- package/es/index.js +1 -0
- package/es/internals/helpers.js +1 -1
- package/es/limit.js +21 -0
- package/lib/index.js +2 -0
- package/lib/internals/helpers.js +1 -1
- package/lib/limit.js +23 -0
- package/package.json +1 -1
- package/types/index.d.ts +1 -0
- package/types/limit.d.ts +28 -0
package/es/index.js
CHANGED
|
@@ -30,6 +30,7 @@ export { default as before } from './before.js';
|
|
|
30
30
|
export { default as curry } from './curry.js';
|
|
31
31
|
export { default as debounce } from './debounce.js';
|
|
32
32
|
export { default as delay } from './delay.js';
|
|
33
|
+
export { default as limit } from './limit.js';
|
|
33
34
|
export { default as memoize } from './memoize.js';
|
|
34
35
|
export { default as negate } from './negate.js';
|
|
35
36
|
export { default as once } from './once.js';
|
package/es/internals/helpers.js
CHANGED
|
@@ -2,7 +2,7 @@ import isObjectLike from '../isObjectLike.js';
|
|
|
2
2
|
import getTag from './getTag.js';
|
|
3
3
|
import { argumentsTag, functionProtoToString, stringUndefined } from './native.js';
|
|
4
4
|
|
|
5
|
-
var VERSION = "1.
|
|
5
|
+
var VERSION = "1.19.0";
|
|
6
6
|
var isBrowser = typeof window !== stringUndefined && isObjectLike(window) && typeof document !== stringUndefined && isObjectLike(document) && window.document === document;
|
|
7
7
|
var supportedArgumentsType = getTag((function () { return arguments; })()) === argumentsTag;
|
|
8
8
|
var FUNC_ERROR_TEXT = 'Expected a function';
|
package/es/limit.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { __spreadArray, __read } from 'tslib';
|
|
2
|
+
|
|
3
|
+
function limit(fn, timespan) {
|
|
4
|
+
var pending = false;
|
|
5
|
+
function limited() {
|
|
6
|
+
var args = [];
|
|
7
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
8
|
+
args[_i] = arguments[_i];
|
|
9
|
+
}
|
|
10
|
+
if (pending)
|
|
11
|
+
return;
|
|
12
|
+
pending = true;
|
|
13
|
+
fn.apply(void 0, __spreadArray([], __read(args), false));
|
|
14
|
+
setTimeout(function () {
|
|
15
|
+
pending = false;
|
|
16
|
+
}, timespan);
|
|
17
|
+
}
|
|
18
|
+
return limited;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
export { limit as default };
|
package/lib/index.js
CHANGED
|
@@ -32,6 +32,7 @@ var before = require('./before.js');
|
|
|
32
32
|
var curry = require('./curry.js');
|
|
33
33
|
var debounce = require('./debounce.js');
|
|
34
34
|
var delay = require('./delay.js');
|
|
35
|
+
var limit = require('./limit.js');
|
|
35
36
|
var memoize = require('./memoize.js');
|
|
36
37
|
var negate = require('./negate.js');
|
|
37
38
|
var once = require('./once.js');
|
|
@@ -183,6 +184,7 @@ exports.before = before;
|
|
|
183
184
|
exports.curry = curry;
|
|
184
185
|
exports.debounce = debounce;
|
|
185
186
|
exports.delay = delay;
|
|
187
|
+
exports.limit = limit;
|
|
186
188
|
exports.memoize = memoize;
|
|
187
189
|
exports.negate = negate;
|
|
188
190
|
exports.once = once;
|
package/lib/internals/helpers.js
CHANGED
|
@@ -4,7 +4,7 @@ var isObjectLike = require('../isObjectLike.js');
|
|
|
4
4
|
var getTag = require('./getTag.js');
|
|
5
5
|
var native = require('./native.js');
|
|
6
6
|
|
|
7
|
-
var VERSION = "1.
|
|
7
|
+
var VERSION = "1.19.0";
|
|
8
8
|
var isBrowser = typeof window !== native.stringUndefined && isObjectLike(window) && typeof document !== native.stringUndefined && isObjectLike(document) && window.document === document;
|
|
9
9
|
var supportedArgumentsType = getTag((function () { return arguments; })()) === native.argumentsTag;
|
|
10
10
|
var FUNC_ERROR_TEXT = 'Expected a function';
|
package/lib/limit.js
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib = require('tslib');
|
|
4
|
+
|
|
5
|
+
function limit(fn, timespan) {
|
|
6
|
+
var pending = false;
|
|
7
|
+
function limited() {
|
|
8
|
+
var args = [];
|
|
9
|
+
for (var _i = 0; _i < arguments.length; _i++) {
|
|
10
|
+
args[_i] = arguments[_i];
|
|
11
|
+
}
|
|
12
|
+
if (pending)
|
|
13
|
+
return;
|
|
14
|
+
pending = true;
|
|
15
|
+
fn.apply(void 0, tslib.__spreadArray([], tslib.__read(args), false));
|
|
16
|
+
setTimeout(function () {
|
|
17
|
+
pending = false;
|
|
18
|
+
}, timespan);
|
|
19
|
+
}
|
|
20
|
+
return limited;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
module.exports = limit;
|
package/package.json
CHANGED
package/types/index.d.ts
CHANGED
|
@@ -48,6 +48,7 @@ export { default as before } from './before';
|
|
|
48
48
|
export { default as curry } from './curry';
|
|
49
49
|
export { default as debounce } from './debounce';
|
|
50
50
|
export { default as delay } from './delay';
|
|
51
|
+
export { default as limit } from './limit';
|
|
51
52
|
export { default as memoize } from './memoize';
|
|
52
53
|
export { default as negate } from './negate';
|
|
53
54
|
export { default as once } from './once';
|
package/types/limit.d.ts
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { FunctionAny } from './internals/types';
|
|
2
|
+
/**
|
|
3
|
+
* 创建一个限流函数,该函数在时间间隔内只会执行一次。
|
|
4
|
+
*
|
|
5
|
+
* 与 `throttle` 的区别:
|
|
6
|
+
* 1. 在时间间隔内再次调用,`limit`不会执行,而`throttle` 会执行;
|
|
7
|
+
* 2. `limit` 没有取消和立即执行的方法,逻辑更简洁。
|
|
8
|
+
*
|
|
9
|
+
* @alias module:Function.limit
|
|
10
|
+
* @since 1.19.0
|
|
11
|
+
* @param {Function} fn 要限流的函数。
|
|
12
|
+
* @param {number} timespan 限流的时间间隔,单位为毫秒。
|
|
13
|
+
* @returns 限流函数。
|
|
14
|
+
* @example
|
|
15
|
+
* function revalidate(){
|
|
16
|
+
* if(document.visibilityState !== 'hidden' || navigator.onLine){
|
|
17
|
+
* // do something
|
|
18
|
+
* console.log('revalidate');
|
|
19
|
+
* }
|
|
20
|
+
* }
|
|
21
|
+
*
|
|
22
|
+
* // 限制 5s 内只会执行一次
|
|
23
|
+
* const limited = limit(revalidate, 5000);
|
|
24
|
+
*
|
|
25
|
+
* window.addEventListener('visibilitychange', limited);
|
|
26
|
+
* window.addEventListener('focus', limited);
|
|
27
|
+
*/
|
|
28
|
+
export default function limit<T extends FunctionAny>(fn: T, timespan: number): (...args: Parameters<T>) => void;
|