当前位置:首页 > 科技  > 软件

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

来源: 责编: 时间:2023-12-18 09:47:23 160观看
导读防抖防抖函数,就是防止抖动,避免事件重复触发。比如监听输入框的输入,不应该在用户每输入一个字符就触发监听,而是在用户输入结束后再来监听。流程为:1、事件触发;2、开启定时器;3、当事件再次触发的时候,就会清除上个定时器,

防抖

防抖函数,就是防止抖动,避免事件重复触发。比如监听输入框的输入,不应该在用户每输入一个字符就触发监听,而是在用户输入结束后再来监听。Aw928资讯网——每日最新资讯28at.com

流程为:1、事件触发;2、开启定时器;3、当事件再次触发的时候,就会清除上个定时器,然后重新开启新的定时器;4、时间到了以后,就开始处理事件操作。Aw928资讯网——每日最新资讯28at.com

现在有一个输入框,代码如下:Aw928资讯网——每日最新资讯28at.com

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

效果如下图:Aw928资讯网——每日最新资讯28at.com

图片图片Aw928资讯网——每日最新资讯28at.com

每输入一个字符,就触发监听事件。如果是搜索查询的话,那就不合适了。Aw928资讯网——每日最新资讯28at.com

现在在监听事件上设置防抖:Aw928资讯网——每日最新资讯28at.com

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

如果在定时器时间内,事件再次触发,那么就清空之前的定时器,然后重新开启新的定时器。Aw928资讯网——每日最新资讯28at.com

效果图:Aw928资讯网——每日最新资讯28at.com

图片图片Aw928资讯网——每日最新资讯28at.com

这就是防抖。Aw928资讯网——每日最新资讯28at.com

节流

节流就是控制事件触发的频率。比如按钮点击,在短时间内多次点击,那么只需要触发一次即可。Aw928资讯网——每日最新资讯28at.com

比如:Aw928资讯网——每日最新资讯28at.com

import React from "react";const Child2 = () => {  return <button onClick={() => {    console.log("点击")  }}>点击</button>};

连续点击多次,效果如下图,如果是涉及到网络请求的话,那么得不偿失了。Aw928资讯网——每日最新资讯28at.com

图片图片Aw928资讯网——每日最新资讯28at.com

现在定义一下节流函数:Aw928资讯网——每日最新资讯28at.com

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

完整代码:Aw928资讯网——每日最新资讯28at.com

import React from "react";const Child2 = () => {  const click = throttle(() => {    console.log("点击")  })  return <button onClick={click}>点击</button>};// 节流function throttle(fn) {  let timeout = null;  return function () {    if (timeout) return;    timeout = setTimeout(() => {      fn.apply(this, arguments);      timeout = null;    }, 1000);  }}

在一秒内连续点击多次,最后只有一次有效。图片Aw928资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-48365-0.htmlJavaScript:简单理解防抖和节流,如何定义防抖和节流函数

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 图解系统设计之Instagram

下一篇: 14个工具,让 DevOps 和 SRE 遥遥领先!

标签:
  • 热门焦点
  • 小米降噪蓝牙耳机Necklace分享:听一首歌 读懂一个故事

    小米降噪蓝牙耳机Necklace分享:听一首歌 读懂一个故事

    在今天下午的小米Civi 2新品发布会上,小米还带来了一款新的降噪蓝牙耳机Necklace,我们也在发布结束的第一时间给大家带来这款耳机的简单分享。现在大家能见到最多的蓝牙耳机
  • K6:面向开发人员的现代负载测试工具

    K6:面向开发人员的现代负载测试工具

    K6 是一个开源负载测试工具,可以轻松编写、运行和分析性能测试。它建立在 Go 和 JavaScript 之上,它被设计为功能强大、可扩展且易于使用。k6 可用于测试各种应用程序,包括 Web
  • 使用Webdriver-manager解决浏览器与驱动不匹配所带来自动化无法执行的问题

    使用Webdriver-manager解决浏览器与驱动不匹配所带来自动化无法执行的问题

    1、前言在我们使用 Selenium 进行 UI 自动化测试时,常常会因为浏览器驱动与浏览器版本不匹配,而导致自动化测试无法执行,需要手动去下载对应的驱动版本,并替换原有的驱动,可能还
  • 腾讯VS网易,最卷游戏暑期档,谁能笑到最后?

    腾讯VS网易,最卷游戏暑期档,谁能笑到最后?

    作者:无锈钵来源:财经无忌7月16日晚,上海1862时尚艺术中心。伴随着幻象的精准命中,硕大的荧幕之上,比分被定格在了14:12,被寄予厚望的EDG战队以绝对的优势战胜了BLG战队,拿下了总决
  • 品牌洞察丨服务本地,美团直播成效几何?

    品牌洞察丨服务本地,美团直播成效几何?

    来源:17PR7月11日,美团App首页推荐位出现&ldquo;美团直播&rdquo;的固定入口。在直播聚合页面,外卖&ldquo;神枪手&rdquo;直播间、美团旅行直播间、美团买菜直播间等均已上线,同时
  • ESG的面子与里子

    ESG的面子与里子

    来源 | 光子星球撰文 | 吴坤谚编辑 | 吴先之三伏大幕拉起,各地高温预警不绝,但处于厄尔尼诺大&ldquo;烤&rdquo;之下的除了众生,还有各大企业发布的ESG报告。ESG是&ldquo;环境保
  • 东方甄选单飞:有些鸟注定是关不住的

    东方甄选单飞:有些鸟注定是关不住的

    作者:彭宽鸿来源:华尔街科技眼&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;&zwj;东方甄选创始人俞敏洪带队的&ldquo;7天甘肃行&rdquo;直播活动已在近日顺利收官。成立后一
  • 英特尔Xe-HP项目终止,将专注Xe-HPC/HPG系列显卡

    英特尔Xe-HP项目终止,将专注Xe-HPC/HPG系列显卡

    据10 月 31 日消息报道,英特尔高级副总裁兼加速计算系统和图形事业部总经理 表示,Xe-HP“ Arctic Sound” 系列服务器 GPU 已经应用于 oneAPI devcloud 云服
  • “买真退假” 这种“羊毛”不能薅

    “买真退假” 这种“羊毛”不能薅

    □ 法治日报 记者 王春   □ 本报通讯员 胡佳丽  2020年初,还在上大学的小东加入了一个大学生兼职QQ群。群主&ldquo;七王&rdquo;在群里介绍一些刷单赚
Top