Js
js 防抖 debounce
使用场景:防多次触发,并且结果以最后的触发为基准
举例说明:刷新列表
实现方法:当触发执行某个方法A时,将延迟执行一段时间执行,在这段时间内如果又有多次触发执行该方法A,那么延长时间以最后一次触发为基准
/**
* 防抖
* @param fn 需要防抖的函数
* @param t 时间
*/
export const debounce = (fn,t = 300) => {
let timeId = null
const delay = t
return function () {
let context = this;
let args = arguments;
if (timeId) {
clearTimeout(timeId)
}
timeId = setTimeout(() => {
timeId = null
fn.apply(context, args)
}, delay)
}
}
使用
addNumber = debounce(function(this: any){
this.setData({
number: this.data.number + 10
})
}, 300)