js 操作过滤

前提知识:

  1. base::闭包

1. 梗概:

一般的工具包都已经有成熟的实现方案了, 只需要懂得如何去使用即可

1. 算法思想:

  1. 进行对应操作
    1. 清楚已经进行的延迟队列
      1. use::clearTimeout()
    2. 重启延迟队列
      1. 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);
    }
}