节流 函数

let timer;

let flag;

/**

* 节流原理:在一定时间内,只能触发一次

*

* @param {Function} func 要执行的回调函数

* @param {Number} wait 延时的时间

* @param {Boolean} immediate 是否立即执行

* @return null

*/

function throttle(func, wait = 500, immediate = true) {

  if (immediate) {

    if (!flag) {

      flag = true;

      // 如果是立即执行,则在wait毫秒内开始时执行

      typeof func === 'function' && func();

      timer = setTimeout(() => {

        flag = false;

      }, wait);

    } else {

    }

  } else if (!flag) {

    flag = true;

    // 如果是非立即执行,则在wait毫秒内的结束处执行

    timer = setTimeout(() => {

      flag = false;

      typeof func === 'function' && func();

    }, wait);

  }

}

export default throttle;

// 限流 防止重复点击跳转支付


function go(...args) {

  throttle(() => {

    _go(...args);

  });

}

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

推荐阅读更多精彩内容

  • let timer; let flag /** * 节流原理:在一定时间内,只能触发一次 * * @param...
    it大東阅读 584评论 0 0
  • 在前端开发的过程中,我们经常会需要绑定一些持续触发的事件,如 resize、scroll、mousemove 等等...
    Grace_feb3阅读 401评论 0 0
  • 什么是防抖 函数防抖(debounce) 是指在一定时间内,在动作被连续频繁触发的情况下,动作只会被执行一次,也就...
    夕阳再美也会落幕阅读 233评论 0 1
  • 函数节流场景 例如:实现一个原生的拖拽功能(如果不用H5 Drag和Drop API),我们就需要一路监听mous...
    凡凡的小web阅读 818评论 0 0
  • 1、节流 多次调用方法,按照一定的时间间隔执行 这个方法的实现也是从Lodash库中copy的 /*** 节流,多...
    孤雁悲鸿影阅读 241评论 0 1