Function

函数

Description:
  • 函数

Source:
Since:
  • 1.0.0

Methods

(static) after(n, func) → {function}

Description:
  • 创建一个函数,当它被调用 n 或更多次之后触发 func

Source:
Since:
  • 1.0.0
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 的次数。

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>

指定参数数量。默认值为 func.length

Returns:

新的柯里化函数。

Type
function

(static) debounce(func, waitopt, immediateopt) → {function}

Description:
  • 创建一个防抖动函数,该函数会从上一次被调用后,延迟 wait 毫秒数后调用 func 方法。

    防抖动函数还提供以下方法:

    1. cancel 方法取消延迟的函数调用。
    2. flush 方法立即调用。
    3. 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

需要延迟的毫秒数。默认 0

immediate boolean <optional>
false

是否在延迟开始前调用。默认 false

Returns:

防抖动函数。

Type
function

(static) delay(func, wait, …argsopt) → {number}

Description:
  • 延迟 wait 毫秒后调用 func

Source:
Since:
  • 1.0.0
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)

Description:
  • 创建一个断言函数结果取反的函数。

Source:
Since:
  • 1.0.0
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}

Description:
  • 创建一个只能调用 func 一次的函数。重复调用将返回第一次调用 func 的结果。

Source:
Since:
  • 1.2.0
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 方法。

    节流函数还提供以下方法:

    1. cancel 方法取消延迟的函数调用。
    2. flush 方法立即调用。
    3. 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

需要节流的毫秒数。默认 0

immediate boolean <optional>
true

是否在节流开始前调用。默认 true

Returns:

节流函数。