JS:防抖与节流函数的实现与应用

一、防抖

防抖:一连串操作只执行一次。通过设置一个延迟时间,如果这段时间没有再次执行操作则运行目标函数,否则重新计时。

下面是一个防抖函数代码:

TypeScript 复制代码
let a=1;
const add = () => {
  a++;
};
const debounce = (fun: Function, delay: number) => {
  let timer: any = null;
  return function () {
    clearTimeout(timer);
    timer = setTimeout(() => {
      fun();
    }, delay);
  };
};
const debounceAdd = debounce(add, 1000);

二、节流

节流:立即执行目标函数,接着设定时间间隔,计时结束后才可再次执行目标函数。

TypeScript 复制代码
let a = 0;
const add = () => {
  a++;
};
const throttle = (fun: Function, delay: number) => {
  let timer: any = null;
  return function () {
    if (!timer) {
      fun();
      timer = setTimeout(() => {
        fun();
        timer = null;
      }, delay);
    }
  };
};
const throttleAdd = throttle(add, 1000);
相关推荐
Demoncode_y5 分钟前
前端布局入门:flex、grid 及其他常用布局
前端·css·布局·flex·grid
明天最后6 分钟前
使用 Service Worker 限制请求并发数
前端·service worker
仲夏幻境14 分钟前
js利用ajax同步调用如何
开发语言·javascript·ajax
java水泥工20 分钟前
基于Echarts+HTML5可视化数据大屏展示-电信厅店营业效能分析
前端·echarts·html5·大屏展示
鹿鹿鹿鹿isNotDefined26 分钟前
Pixelium Design:Vue3 的像素风 UI 组件库
前端·javascript·vue.js
运维行者26 分钟前
知乎崩了?立即把网站监控起来!
前端·javascript·后端
aramae42 分钟前
详细分析平衡树--红黑树(万字长文/图文详解)
开发语言·数据结构·c++·笔记·算法
stayong44 分钟前
市面主流跨端开发框架对比
前端
一百天成为python专家1 小时前
python爬虫入门(小白五分钟从入门到精通)
开发语言·爬虫·python·opencv·yolo·计算机视觉·正则表达式
一米八二的矮个子1 小时前
JavaScript语法进阶(一)
javascript