函数防抖 和 函数节流

2019-03-18  本文已影响0人  伽蓝star

函数防抖 和 函数节流

函数节流

指一个函数在一定事件内只能触发一次 例如 登录验证码 过地铁闸门
间隔一段时间就运行一次的场景: 滚动加载 表单提交用的最多

const _.throttle = (func, wait) => {
  let timer;

  return () => {
    if (timer) {
      return;
    }

    timer = setTimeout(() => {
      func();
      timer = null;
    }, wait);
  };
};

函数防抖

指一个函数在n秒内只执行一次,如果再次点击则重新计算执行时间 例如 坐公交 排队出门
连续的是件只需触发一次的场景有: 搜索框 手机号 邮箱验证 窗口大小调整 只需要在调整完成后计算 防止重复渲染

const _.debounce = (func, wait) => {
  let timer;

  return () => {
    clearTimeout(timer);
    timer = setTimeout(func, wait);
  };
};

理解: 返回一个匿名函数 利用闭包的特点 完成上一个定时器的清除! 重点是闭包的应用

函数防抖与函数节流的区别。函数防抖,将多次执行的事件合并成一次。函数节流,保持一段时间执行一次.

上一篇 下一篇

猜你喜欢

热点阅读