Methods
(static) after(n, func) → {function}
Example
const saves = ['profile', 'settings'];
const done = after(saves.length, () => console.log('done saving!'));
saves.forEach(item=>{
console.log(item);
done();
});
// 'profile'
// 'settings'
// 'done saving!'
Parameters:
Name | Type | Description |
---|---|---|
n |
number | 函数应该在调用多少次后执行。 |
func |
function | 用来限定的函数。 |
Returns:
新的限定函数。
- Type
- function
(static) before(n, func) → {function}
- Description:
创建一个调用
func
的函数,调用次数少于n
次。之后再调用这个函数,将返回最后一次调用func
的结果。
- Source:
- Since:
- 1.0.0
Example
let count = 0;
const increment = before(3, () => {
return ++count;
});
increment(); // 1
increment(); // 2
increment(); // 2 返回之前的结果
Parameters:
Name | Type | Description |
---|---|---|
n |
number | 不再调用 |
func |
function | 限制执行的函数。 |
Returns:
新的限定函数。
- Type
- function
(static) curry(func, arityopt) → {function}
- Description:
创建一个函数。该函数接受
func
参数,在提供的参数数量达到arity
后调用func
并返回其结果。curry._
或curry.placeholder
可用作参数的占位符。
- Source:
- Since:
- 1.8.0
Example
function abc(a, b, c){
return [a, b, c];
}
var curried = curry(abc);
curried(1)(2)(3); // [1, 2, 3]
curried(1, 2)(3); // [1, 2, 3]
curried(1, 2, 3); // [1, 2, 3]
curried(1)(curry._, 3)(2); // [1, 2, 3]
curried(curry._, curry._, 3)(curry._, 2)(1); // [1, 2, 3]
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
func |
function | 需要柯里化的函数。 |
|
arity |
number |
<optional> |
指定参数数量。默认值为 |
Returns:
新的柯里化函数。
- Type
- function
(static) debounce(func, waitopt, immediateopt) → {function}
- Description:
创建一个防抖动函数,该函数会从上一次被调用后,延迟
wait
毫秒数后调用func
方法。防抖动函数还提供以下方法:
cancel
方法取消延迟的函数调用。flush
方法立即调用。pending
方法是否在等待函数执行。
- Source:
- Since:
- 1.0.0
Example
function calculateLayout(e){
console.log('calculate layout event: ', e);
}
// 避免窗口在变动时出现昂贵的计算开销。
window.addEventListener('resize', debounce(calculateLayout, 200));
const debounced = debounce(()=>{
// do something
}
// 点击按钮立即执行,而后如果在每 300 毫秒内连续点击,将在最后一次点击延迟 300 毫秒后执行。
document.querySelector('button').addEventListener('click', debounced, 300, true));
// 取消防抖动调用
window.addEventListener('popstate', debounced.cancel);
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
func |
function | 要防抖动的函数。 |
||
wait |
number |
<optional> |
0
|
需要延迟的毫秒数。默认 |
immediate |
boolean |
<optional> |
false
|
是否在延迟开始前调用。默认 |
Returns:
防抖动函数。
- Type
- function
(static) delay(func, wait, …argsopt) → {number}
Example
// 延迟 1000 毫秒后执行
delay(function(text){
console.log(text);
}, 1000, 'hello world');
// 'hello world'
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
func |
function | 要延迟的函数。 |
|
wait |
number | 要延迟的毫秒数。 |
|
args |
* |
<optional> <repeatable> |
调用函数时传入的参数。 |
Returns:
定时器 id
。
- Type
- number
(static) negate(predicate)
Example
function isEven(num){
return num % 2 === 0;
}
const nums = [1,2,3,4,5];
nums.filter(isEvent); // [2, 4]
const ne = negate(isEvent);
nums.filter(ne); // [1, 3, 5]
Parameters:
Name | Type | Description |
---|---|---|
predicate |
function | 需要对结果取反的函数。 |
Returns:
新的取反函数。
(static) once(func) → {function}
Example
let count = 0;
const increment = _.once(()=>{
return ++count;
});
increment(); // 1
increment(); // 1
increment(); // 1
Parameters:
Name | Type | Description |
---|---|---|
func |
function | 限制执行的函数。 |
Requires:
Returns:
新的限定函数。
- Type
- function
(static) partial(func, …argsopt) → {function}
- Description:
创建一个函数。该函数调用
func
,并传入预设的args
参数。partial._
或partial.placeholder
可用作参数的占位符。
- Source:
- Since:
- 1.0.0
Example
function greet(greeting, name){
return greeting + ' ' + name;
}
const sayHelloTo = partial(greet, 'hello');
sayHelloTo('jeff'); // 'hello jeff'
const greetJeff = partial(greet, partial._, 'jeff');
greetJeff('hi'); // 'hi jeff'
Parameters:
Name | Type | Attributes | Description |
---|---|---|---|
func |
function | 需要预设的函数。 |
|
args |
* |
<optional> <repeatable> |
预设的参数。 |
Returns:
预设参数的函数。
- Type
- function
(static) throttle(func, waitopt, immediateopt)
- Description:
创建一个节流函数,该函数在
wait
毫秒数内最多执行一次func
方法。节流函数还提供以下方法:
cancel
方法取消延迟的函数调用。flush
方法立即调用。pending
方法是否在等待函数执行。
- Source:
- Since:
- 1.0.0
Example
function updatePosition(e){
console.log('update position event: ', e);
}
// 避免在滚动时频繁的更新定位。
window.addEventListener('scroll', throttle(updatePosition, 100));
const throttled = throttle(()=>{
// do something
}
// 点击按钮, 300 毫秒内最多执行一次。
document.querySelector('button').addEventListener('click', throttled, 300));
// 取消节流调用。
window.addEvenetListener('popstate', throttled.cancel);
Parameters:
Name | Type | Attributes | Default | Description |
---|---|---|---|---|
func |
function | 要节流的函数。 |
||
wait |
number |
<optional> |
0
|
需要节流的毫秒数。默认 |
immediate |
boolean |
<optional> |
true
|
是否在节流开始前调用。默认 |
Returns:
节流函数。