文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript:简单理解防抖和节流,如何定义防抖和节流函数

2024-11-30 03:59

关注

流程为:1、事件触发;2、开启定时器;3、当事件再次触发的时候,就会清除上个定时器,然后重新开启新的定时器;4、时间到了以后,就开始处理事件操作。

现在有一个输入框,代码如下:

import React from "react";
const Child2 = () => {
  return  {
    console.log(value)
  }} />
};

效果如下图:

图片

每输入一个字符,就触发监听事件。如果是搜索查询的话,那就不合适了。

现在在监听事件上设置防抖:

import React from "react";
const Child2 = () => {
  const inputChange = debounce(({ target: { value } }) => {
    console.log(value)
  })
  return 
};
function debounce(fn) {
  let timeout = null;
  return function () {
    clearTimeout(timeout);
    timeout = setTimeout(() => {
      fn.apply(this, arguments);
    }, 1000);
  };
}

如果在定时器时间内,事件再次触发,那么就清空之前的定时器,然后重新开启新的定时器。

效果图:

图片

这就是防抖。

节流

节流就是控制事件触发的频率。比如按钮点击,在短时间内多次点击,那么只需要触发一次即可。

比如:

import React from "react";
const Child2 = () => {
  return 
};

连续点击多次,效果如下图,如果是涉及到网络请求的话,那么得不偿失了。

图片

现在定义一下节流函数:

// 节流
function throttle(fn) {
  let timeout = null;
  return function () {
    if (timeout) return;
    timeout = setTimeout(() => {
      fn.apply(this, arguments);
      timeout = null;
    }, 1000);
  }
}

完整代码:

import React from "react";
const Child2 = () => {
  const click = throttle(() => {
    console.log("点击")
  })
  return 
};

// 节流
function throttle(fn) {
  let timeout = null;
  return function () {
    if (timeout) return;
    timeout = setTimeout(() => {
      fn.apply(this, arguments);
      timeout = null;
    }, 1000);
  }
}

在一秒内连续点击多次,最后只有一次有效。

来源:读心悦内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯