模块: func

常用的函数处理方法



debounce(func, wait, immediate)

防抖函数,简单来说就是防止抖动。

当调用动作触发一段时间后,才会执行该动作,若在这段时间间隔内又调用此动作则将重新计算时间间隔。

Parameters:
Name Type Description
func function

传入的函数

wait number

时间间隔

immediate boolean

是否立即执行

Returns:

返回调用函数

Type:
function
Example
window.onresize = $api.func.debounce(function(event) {
  console.log('onresize')
},300)


rafThrottle(fn)

简易的节流,使用requestAnimationFrame定时。

一个连续操作中的处理,按照阀值时间间隔进行触发,从而实现节流。

Parameters:
Name Type Description
fn function

传入的函数

Returns:

返回调用函数

Type:
function
Example
window.onscroll = $api.func.rafThrottle(function(event) {
  console.log('onscroll')
})


throttle(func, wait, options)

节流函数,当持续触发事件时,保证隔间时间触发一次事件。

频率控制函数, func执行次数不超过 1 次/wait

预先设定一个执行周期,当调用动作的时刻大于等于执行周期则执行该动作,然后进入下一个新的时间周期。

Parameters:
Name Type Description
func function

传入的函数

wait number

时间间隔

options objecr

如果想忽略开始边界上的调用则传入 {leading:false},
如果想忽略结束边界上的调用则传入 {trailing:false}。

Returns:

返回调用函数

Type:
function
Example
window.onscroll = $api.func.throttle(function(event) {
  console.log('100ms')
}, 100 ,{leading:false})


until(milliseconds, check)

一直定时执行,直到检查条件通过。

Parameters:
Name Type Description
milliseconds number

毫秒数

check function

检查条件的方法

Returns:

Promise

Type:
Promise
Example
$api.func.timerUntil(3000, () => !this.loading).then(() => {
  console.log('loading finished')
})