美文网首页
防抖动debounce ts实现

防抖动debounce ts实现

作者: ashyanSpada | 来源:发表于2021-04-09 11:48 被阅读0次

    前端开发中,当监听浏览器事件时,如监听鼠标移动或用户输入时,会遇到监听函数短时间内重复触发的问题,这会带来不必要的性能开销。当监听函数会发起异步网络请求时,会发起大量的无效请求。可以对监听函数添加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主要解决函数在短时间内多次触发的问题

    相关文章

      网友评论

          本文标题:防抖动debounce ts实现

          本文链接:https://www.haomeiwen.com/subject/jhyvkltx.html