防抖动debounce ts实现

前端开发中,当监听浏览器事件时,如监听鼠标移动或用户输入时,会遇到监听函数短时间内重复触发的问题,这会带来不必要的性能开销。当监听函数会发起异步网络请求时,会发起大量的无效请求。可以对监听函数添加debounce(防抖动)解决这个问题,ts版本的debounce实现如下:

function deBounce<T>(fn: T, delay: number): () => void {
  let timer: NodeJS.Timeout
  return function(): void {
    const args: any[] = Array.prototype.map.call(arguments, val => val);
    if (timer) {
      clearTimeout(timer);
    }
    timer = setTimeout(() => {
      typeof fn === 'function' && fn.apply(null, args);
      clearTimeout(timer);
    }, delay > 0 ? delay : 100);
  };
}

总结

防抖动debounce主要解决函数在短时间内多次触发的问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。