节流 throttle

使用场景:防多次触发,并且结果以第一次触发为基准

举例说明:添加

实现方法:当触发执行某个方法A时,方法立即执行,并指定一段独占时间,在这个独占时间内,如果有其他多次触发执行该方法A,那么将直接抛弃

/**
 * 节流
 * @param fn 需要节流的函数
 * @param t 时间
 */
export const throttle = (fn,t=300) => {
  let flag = true
  const interval = t
  return function () {
    let context = this;
    let args = arguments;
    if (flag) {
      fn.apply(context, args)
      flag = false
      setTimeout(() => {
        flag = true
      }, interval)
    }
  }
}

使用

reduceNumber = throttle(function(this: any) {
  this.setData({
   number: this.data.number - 1
  })
}, 1000)