前提知识:
- base::闭包
1. 梗概:
一般的工具包都已经有成熟的实现方案了, 只需要懂得如何去使用即可
1. 算法思想:
- 进行对应操作
- 清楚已经进行的延迟队列
- use::clearTimeout()
- 重启延迟队列
- use::setTimeout()
- 清楚已经进行的延迟队列
使用方法:
/*为调用做准备*/
let debounced = debounce(callback,2000);//只需要执行一次即可
/*调用*/
debounced(参数1,参数2);//往往多次执行
/*释放debounced所消耗的内存*/
let debounced = null;1. 在ts中的实现:
1. 超简化版本:
function debounce(callback:Function,timeout:number){
let timer:number;
return function(){
if(timer)window.clearTimeout(timer);
timer = window.setTimeout(callback,timeout);
}
}