_.debounce防抖动和节流

FreeRTOS笔记(十五)FreeRTOS总结 文章目录01 - 裸机和FreeRTOS区别1.1 - 裸机1.2 - FreeRTOS1.3 - 区别02 - 对FreeRTOS的感受03 - 推荐 上一文链接:FreeRTOS笔记(十四)[简] 软件定时器、事件组、任务通知 01 - 裸机和FreeRTOS区别   学完FreeRTOS,应该要自己总结一下FreeRTOS和裸机的区别,宏观上说,FreeRTOS是一个运行在裸机上的微内核,... 阅读详情

转载于vue官网
https://cn.vuejs.org/
https://zhuanlan.zhihu.com/p/72923073

防抖debounce
假设函数持续多次执行,我们希望让它冷静下来再执行。也就是当持续触发事件的时候,函数是完全不执行的,等最后一次触发结束的一段时间之后,再去执行

例如下面的例子:
在1000毫秒内,我们不停的在input中输入,则这1000毫秒内的函数总不会执行。每输入一次,这1000号码总会重置,当等待1000毫秒后,对应的函数才会执行。

节流throttle
节流的意思是让函数有节制地执行,而不是毫无节制的触发一次就执行一次。什么叫有节制呢?就是在一段时间内,只执行一次。

例如下面的例子:
我们不停的输入,但是每2000毫秒总会执行一次函数

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">

<head>
    <meta charset="UTF-8">
    <title>侦听器</title>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <script src="https://cdn.jsdelivr.net/npm/axios@0.12.0/dist/axios.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/lodash@4.13.1/lodash.min.js"></script>
</head>

<body>
    <div id="app">
        <p>结果:</p>
        <p>问一个回答 是或否的问题: <label><input type="text" v-model="question" v-bind:disabled='inputDisabled'></label>
        </p>
        <p>{{answer}}</p>
    </div>
    <script>
        'use strict';
        function debounce(func,delay){
            let timeout
            return function(){
                clearTimeout(timeout)
                timeout = setTimeout(() => {
                    func.apply(this,arguments)
                }, delay);
            }
        }
        function throttle(func, delay) {
                let run = true
                return function () {
                    if (!run) {
                        return  // 如果开关关闭了,那就直接不执行下边的代码
                    }
                    run = false // 持续触发的话,run一直是false,就会停在上边的判断那里
                    setTimeout(() => {
                        func.apply(this, arguments)
                        run = true // 定时器到时间之后,会把开关打开,我们的函数就会被执行
                    }, delay)
                }
            }
        let QAObj = {
            question: '',
            answer: 'I cannot give you an answer until you ask a question!',
            inputDisabled: false
        };
        let reg = /(\?$)|(?$)/;
        let vm = new Vue({
            el: '#app',
            data: QAObj,
            // 如果 `question` 发生改变,这个函数就会运行
            watch: {
                question: function () {
                    this.answer = 'Waiting for you to stop typing...';
                    this.throttle2();
                }
            },
            methods: {
                // `_.debounce` 是一个通过 Lodash 限制操作频率的函数。
                // 在这个例子中,我们希望限制访问 yesno.wtf/api 的频率
                // AJAX 请求直到用户输入完毕才会发出。想要了解更多关于
                debounce1: _.debounce(function () {
                    this.answer = 'Thinking ... ';
                    this.inputDisabled = true;
                    axios.get('https://yesno.wtf/api')
                        // then中的函数如果不是箭头函数,则需要对this赋值self
                        .then((response) => {
                            this.answer = _.capitalize(response.data.answer);
                            this.inputDisabled = false;
                            this.$el.focus()
                        })
                        .catch((error) => {
                            this.answer = 'Error! Could not reach the API. ' + error;
                            this.inputDisabled = false;
                            this.$el.focus()
                        })
                }, 1000), // 这是我们为判定用户停止输入等待的毫秒数
                 debounce2: debounce(function () {
                    this.answer = 'Thinking ... ';
                    this.inputDisabled = true;
                    axios.get('https://yesno.wtf/api')
                        // then中的函数如果不是箭头函数,则需要对this赋值self
                        .then((response) => {
                            this.answer = _.capitalize(response.data.answer);
                            this.inputDisabled = false;
                            this.$el.focus()
                        })
                        .catch((error) => {
                            this.answer = 'Error! Could not reach the API. ' + error;
                            this.inputDisabled = false;
                            this.$el.focus()
                        })
                }, 1000), // 这是我们为判定用户停止输入等待的毫秒数
                throttle1:_.throttle(function () {
                    this.answer = 'Thinking ... ';
                    this.inputDisabled = true;
                    axios.get('https://yesno.wtf/api')
                        // then中的函数如果不是箭头函数,则需要对this赋值self
                        .then((response) => {
                            this.answer = _.capitalize(response.data.answer);
                            this.inputDisabled = false;
                            this.$el.focus()
                        })
                        .catch((error) => {
                            this.answer = 'Error! Could not reach the API. ' + error;
                            this.inputDisabled = false;
                            this.$el.focus()
                        })
                }, 2000),
                 throttle2: throttle(function () {
                    this.answer = 'Thinking ... ';
                    this.inputDisabled = true;
                    axios.get('https://yesno.wtf/api')
                        // then中的函数如果不是箭头函数,则需要对this赋值self
                        .then((response) => {
                            this.answer = _.capitalize(response.data.answer);
                            this.inputDisabled = false;
                            this.$el.focus()
                        })
                        .catch((error) => {
                            this.answer = 'Error! Could not reach the API. ' + error;
                            this.inputDisabled = false;
                            this.$el.focus()
                        })
                }, 2000),

            },
            computed: {},
        });
    </script>
</body>

</html>
【Unity3D优化】优化内置shader的内存占用 在打AB包的过程中,并不会把这些Built-in的shader单独打包,并与材质球和预设体做好依赖,因此打AB包时,Unity会自行在材质球和预制体的AB包内每一个都包含进去用到的Built-in的Shader,而且运行时,由于加载的是不同的AB包,shader也是不同的实例,占用的也是多份内存。结合项目特点可以分析,由于项目里使用了大量的粒子特效,一些特殊的效果,会给特效师写定制的shader,但是这些常见的效果,特效师直接使用了Unity Built-in的shader。继续优化内存占用。 阅读详情

相关推荐

手把手教你用CH340给正点原子ESP8266烧录固件(附串口调试技巧)

本文详细讲解了使用CH340模块为正点原子ESP8266烧录AT固件的完整流程与关键技巧。核心在于烧录时必须使用3.3V供电,并正确连接GPIO0引脚至GND以进入下载模式。文章涵盖了从硬件接线、软件参数配置到烧录后串口调试验证的全步骤,并提供了常见问题排查方案,帮助开发者一次性成功完成固件烧录。

weixin_29201933的博客 232

防抖(debounce)和节流(throttle)

一、防抖 动作绑定事件,动作发生后一定时间后触发事件,在这段时间内,如果该动作又发生,则重新等待一定时间再触发事件。 具体方法是:在上一次事件触发之后的time时间内如果事件没有再次触发,那么就在time时间后触发,否则将触发的时间作为新的起始点 通俗理解就是,将密集的时间触发事件看作一个时间整体,整个整体只触发一次事件,密集的界定就是相邻事件触发时间小于time,则以这个整体的最后一次事件触发为起始点 ...

天高任鸟飞 3761

基于STM32+OV7670的图像采集系统(基础篇:ov7670介绍)

一、简单认识 先来看一下外观: OV7670,图像传感器,体积小,工作电压低,提供单片VGA摄像头和影像处理器的所有功能。通过SCCB总线控制,可以输入整帧、子采样、取窗口等方式的各种分辨率8位影像数据。 其他介绍比较繁琐,这里就不一一赘述了,我们只需要知道它是通过SCCB总线控制的就行了。 带FIFO与不带FIFO 目前市场上购买的ov7670模块分为两种,一种是不带FIFO芯片、一种是带FIFO芯片的。 FIFO是什么:(First Input First Output)先入先出的意思,

m0_59113542的博客 4万+

快速理解_.debounce方法

首先:   先谈谈类似上图的需求,有可能需要实现用户在输入内容的时候,使用ajax实时传输内容到服务器。 我们肯定不希望看到,每次输入都请求一次,如此频繁的请求,恐怕对身体也不是很好吧? 其次: 解决的思路之一:underscore.js类库中的_.debounce方法。关于什么是underscore,什么是函数式编程等等,我觉得有必要了解下。 说正事:_.debounce方法...

weixin_33827590的博客 9006

【OpenClaw从入门到精通】第66篇:Skill开发进阶——从零打造一个跨境选品Skill(附完整代码)(2026实测版)

2026年跨境电商效率革命中,AI Agent已成为选品核心工具,但通用Skill难以适配个性化需求。本文以“跨境选品”为实战场景,从零讲解OpenClaw Skill的完整开发流程:从需求分析、目录结构设计、SKILL.md编写,到Python脚本开发(含1688商品搜索、销量分析、竞品对比核心功能),再到调试测试、安全审计与ClawHub发布。文中提供可直接复制的完整代码,覆盖多平台适配、异常处理、数据可视化等进阶功能,同时解决API调用、链接失效等实际问题。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 567

一文掌握DrissionPage的详细使用

是一个基于 Python 的网页自动化工具,主要用于网页数据的抓取、自动化操作和测试。它结合了 Selenium 和 Requests 的优点,提供了更简洁、高效的 API,适用于各种网页自动化任务。DrissionPage 是一个功能强大且易于使用的网页自动化工具,适用于各种网页自动化任务。希望本文的 DrissionPage 的基本使用方法和一些高级功能能够帮助到你。

数据知道的博客 1万+

Vue 防抖 debounce

Vue 防抖 debounce,防止快速多次点击

qq_44280090的博客 2393

flowable工作流看这一篇就够了(基础篇)

接下来我们构建一个非常简单的请假流程,Flowable引擎需要流程定义为BPMN 2.0格式,这是一个业界广泛接受的XML标准。在Flowable术语中,我们将其称为一个流程定义(process definition)。一个流程定义可以启动多个流程实例(process instance)。流程定义可以看做是重复执行流程的蓝图。在这个例子中,流程定义定义了请假的各个步骤,而一个流程实例对应某个雇员提出的一个请假申请。

qq_38196449的博客 2万+

debounce防抖函数的使用(js和vue)

debounch防抖函数主要应用场景,解决按钮快速点击,多次请求的问题和input输入框多次请求的问题。接下来直接介绍在js和vue项目中的使用方式。lodash工具库地址:https://lodash.com/docs#debounce 三个参数: _.debounce(func, [wait=0], [options={}]) options有如下三个可选参数配置: leading:指定在延迟开始前是否执行func(默认为false)。 maxWait:设置func...

trigger的博客 4805

什么是华为OD?怎么才能通过华为OD机试?华为OD机试怎么刷题?(2024最新华为OD机试E卷更新中)

华为OD是Outsourcing Dispacth模式,是华为和外企德科联合招聘的简称。目前华为大多数是OD招聘。OD模式也是华为提出的一种新的用工形式,每年都会从OD项目挑优秀员工转为正编。所有OD和正式员工一样对待,没有差别,部门平时开会、评审等活动都是一起参加的,是同薪同酬,都是由华为的HR直接定的薪资,看的是我们技术能力。华为是大企业,能到华为上班也是有能力的,每个部门都有好多职位,是金子,在哪都会发光。

KJ.JK 11万+

【SOUND】Linux音频子系统ASoC的驱动框架总分析

ALSA系统在芯片(ASoC)层的总体项目目标是为嵌入式芯片处理器(例如PXA2XX,AU1X00,IMX等)和便携式音频编解码器提供更好的ALSA支持。 在进入ASoC子系统之前,内核对SoC音频有一些支持,但是它有一些局限性:ASoC层旨在解决这些问题并提供以下内容特征 :为了实现这一切,ASoC基本上将嵌入式音频系统分为多个可重复使用的组件驱动程序:另外,这里提下OSS(Open Sound System)这个基本被弃用的音频框架。 可以参考Linux OSS架构声卡驱动框架 2.3 ASoC重要

wang 恒 的博客 1781

面试官:什么是debounce?

这是因为Vue是基于响应式原理的框架,在数据变化后需要重新渲染视图,因此将函数封装成 watcher 可以保证在数据更新后才执行相应的操作,避免出现意料之外的情况。是一种限制函数执行频率的技术,它可以在事件触发后延迟一段时间再执行函数,如果在这个时间内再次触发该事件,则之前的计时器会被清除并重新开始计时。在每次被调用时,先清除之前的计时器,并重新设置一个新的计时器,延迟一定时间后执行传入的函数。函数,通过定时器来延迟函数的执行,并能够在规定时间内清除之前的计时器,实现函数调用的控制。函数对该方法进行包装。

java小白翻身 2293

ADB加密实例

主要介绍如何给adb命令增加加密访问

四儿家的小祖宗的博客 2911

【转载】防抖动(debounce)和节流(throttle)

9527 211

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

防抖动(debounce)和节流(throttle)

防抖动(debounce)和节流(throttle) 为避免函数频繁触发,如resize函数等。可用函数防抖和节流来优化。 防抖动(debounce) 在频繁触发的情况下,只等有 足够的空闲时间 的情况下才触发。 var debounce = function (gap, func) { var timer = null; return function () { var args = arguments; if (timer) clearTimeout(

wldssm的博客 336

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JS中常见的防抖动(debounce )和节流阀(throttle )

针对一些会频繁触发的事件如scroll、resize,如果正常绑定事件处理函数的话,有可能在很短的时间内多次连续触发事件,十分影响性能。因此针对这类事件要进行防抖动或者节流处理防抖动它的做法是限制下次函数调用之前必须等待的时间间隔。正确实现 debouncing 的方法是将若干个函数调用合成 一次,并在给定时间过去之后仅被调用一次。// 将会包装事件的 debounce 函数function deb

一水茶缘~~ 9157

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

防抖动(debounce )和 节流阀(throttle )

// 防抖 // 首次运行时把定时器赋值给一个变量, 第二次执行时, // 如果间隔没超过定时器设定的时间则会清除掉定时器, // 重新设定定时器, 依次反复, 当我们停止下来时, // 没有执行清除定时器, 超过一定时间后触发回调函数。 function debounce(fn, delay = 100) { var timer = null; return function() { if (timer) clearTimeout(timer) t.

秦璐璐的博客帝国 673

js debounce(防抖动函数)和 throttle(节流函数)

debounce(防抖动函数) 短时间内不重复触发一个事件 设置一个门槛值,表示两次 Ajax 通信的最小间隔时间。如果在间隔时间内,发生新的keydown事件,则不触发 Ajax 通信,并且重新开始计时。如果过了指定时间,没有发生新的keydown事件,再将数据发送出去。 这种做法叫做 debounce(防抖动)。假定两次 Ajax 通信的间隔不得小于2500毫秒,上面的代码可以改写成下面这样。 $('textarea').on('keydown', debounce(ajaxAction, 2500))

yheartbeats的博客 1035

关于js节流函数throttle和防抖动debounce

废话不多说,直奔主题。 什么是throttle和debounce? 这两个方法的主要目的多是用于性能优化。最常见的应用尝尽就是在通过监听resize、scroll、mouseover等事件时候的性能消耗。拿scroll来说,没有处理时滑动一次滚动条scroll事件会触发多次,如果其中涉及的代码偏重,那么性能消耗肯定是非常大。使用节流和防抖...

weixin_33694620的博客 116

throttle(节流函数) 与 debounce(防抖动函数)理解与实现

我们会对一些触发频率较高的事件进行监听,(如:resize scroll keyup事件) 如果在回调里执行高性能消耗的操作(如反复操作dom, 发起ajax请求等),反复触发时会使得性能消耗提高,浏览器卡顿,用户使用体验差。 或者我们需要对触发的事件延迟执行回调,此时可以借助throttle/debounce函数来实现需求。 throttle: 节流函数   在一个时间段...

andingran3462的博客 300

RxJava debounce()和throttleWithTimeout()

官方地址:http://reactivex.io/documentation/operators/debounce.html debounce :防抖动 throttleWithTimeout:节流超时 debounce 和throttleWithTimeout 点击查看详情都跳转到同一个界面 作用大致一样, 但是看源码debounce return 返回值多一个线程 看源码 deb...

小牧在一直在学习,在前进的道路上大家一起学习,进步。 1423

loadash-debounce(防抖动)

<<< 超级nice的一篇博文 >>> 抖动现象常见的场景有页面滚动事件,输入框input事件,页面resize事件等等 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport"...

weixin_45152848的博客 1851

debounce(防抖动函数)- 转载学习

短时间内不重复触发一个事件 设置一个门槛值,表示两次 Ajax 通信的最小间隔时间。如果在间隔时间内,发生新的keydown事件,则不触发 Ajax 通信,并且重新开始计时。如果过了指定时间,没有发生新的keydown事件,再将数据发送出去。 这种做法叫做 debounce(防抖动)。假定两次 Ajax 通信的间隔不得小于2500毫秒,上面的代码可以改写成下面这样。 $('textarea').o...

ITMrZhu的博客 813

js节流与防抖动

一些函数事件会在短时间内触发很多次,如resize,scroll。在用户某些操作时,可能会引起导致一些严重的性能问题。解决的方法主要有:函数防抖动(Debouncing) 和/或 函数节流(Throttling) 函数去抖动(Debounce) 当事件发生时,我们不会立即激活回调。相反,我们等待一定的时间并检查相同的事件是否再次触发。如果是,我们重置定时器,并再次等待。如果在等待期间没有发生相同的...

weixin_39573101的博客 252

js前端性能优化之函数节流和函数防抖

原创传送门:https://www.cnblogs.com/ljx20180807/p/10161051.html 前言:针对一些会频繁触发的事件如scroll、resize,如果正常绑定事件处理函数的话,有可能在很短的时间内多次连续触发事件,十分影响性能 节流: 节流:使得一定时间内只触发一次函数。 它和防抖动最大的区别就是,节流函数不管事件触发有多频繁,都会保证在规定时间内一定会执行一次真正的...

克隆代码 213

Rxjs--过滤操作符

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34162629的博客 443
上一篇: vue组件切换
下一篇: 首页聚焦,回车输入
han_hanker
博客等级 码龄13年 35粉丝 106原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值