js节流

节流(throttle)

第一步

  1. 实现一个函数,返回一个函数func
  2. 参数,第一个参数是一个函数,第二个参数是一个数字time
  3. 当频繁调用返回的函数func时,有规律地time时间执行一次
function throttle(func, timeout) {
  let timer;
  return function () {
    if (timer) {
     return;
    }
    // 每次调用都指定timeout后再执行
    timer = setTimeout(() => {
      timer = null;
      func();
    }, timeout);
  };
}

第二步

  1. 函数可以传参数
  2. 在func调用时要使用function ()的上下文this
function throttle(func, timeout) {
  let timer;
  return function () {
    if (timer) {
      return;
    }
    // 每次调用都指定timeout后再执行
    timer = setTimeout(() => {
      timer = null;
      func.apply(this, Array.from(arguments));
    }, timeout);
  };
}

你可能感兴趣的:(js节流)