常用的函数处理方法
-
-
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') })