debounce防抖

在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时;典型的案例就是输入搜索:输入结束后n秒才进行搜索请求,n秒内又输入的内容,就重新计时。

<div id="app">
输入内容:<input type="text" class="input" @keyup="deb"/>
<div> 输入次数:{{ num }}</div>
</div>
let time
var app = new Vue({
el: '#app',
data: {
num: 0,
},
methods: {
deb: function () {
let that = this
if (time) {
clearTimeout(time)
}
time = setTimeout(function () {
that.num++
console.log('输入了' + that.num + '次')
time = undefined;
}, 2000)
}
})

throttle节流

规定在一个单位时间内,只能触发一次函数,如果这个单位时间内触发多次函数,只有一次生效; 典型的案例就是鼠标不断点击触发,规定在n秒内多次点击只有一次生效。

在某应用购买火车票/飞机票等商品的时候,不断地点击刷新购买,总不能一直点击一直请求吧,系统会崩掉的,所以节流就很有必要了。


<div id="app">
<button @click="thr">点击</button>
<div>实际点击:{{clicknumber}}</div>
<div>有效点击:{{num}}</div>
</div>
let time
let lastTime
var app = new Vue({
el: '#app',
data: {
num: 0,
clicknumber: 0
},
methods: {
thr: function () {
this.clicknumber++
let that = this
let now = new Date();
if (lastTime && now - lastTime < 2000) {
clearTimeout(time)
}
time = setTimeout(function () {
that.num++
console.log('点击了' + that.num + '次')
lastTime = new Date()
}, 500)
}
}
})

区别

防抖动是将多次执行变为最后一次执行

节流是将多次执行变成每隔一段时间执行

javascript【应用】debounce和throttle的更多相关文章

  1. Javascript中 节流函数 throttle 与 防抖函数 debounce

    问题的引出 在一些场景往往由于事件频繁被触发,因而频繁地进行DOM操作.资源加载,导致UI停顿甚至浏览器崩溃. 在这样的情况下,我们实际上的需求大多为停止改变大小n毫秒后执行后续处理:而其他事件大多的 ...

  2. Debounce 和 Throttle 的原理及实现---防止频繁触发某事件

    原文:http://blog.csdn.net/redtopic/article/details/69396722 在处理诸如 resize.scroll.mousemove 和 keydown/ke ...

  3. 白话debounce和throttle

    遇到的问题 在开发过程中会遇到频率很高的事件或者连续的事件,如果不进行性能的优化,就可能会出现页面卡顿的现象,比如: 鼠标事件:mousemove(拖曳)/mouseover(划过)/mouseWhe ...

  4. debounce 与 throttle 区别

    原文地址:http://undefinedblog.com/debounce-and-throttle/ 二.什么是debounce    1. 定义 如果用手指一直按住一个弹簧,它将不会弹起直到你松 ...

  5. 【Javascript函数】节流throttle和间隔控制dbounce

    一.throttle 函数节流,指把很小时间内触发的N多事件,节流成1个事件. 我们这里说的throttle就是函数节流的意思.再说的通俗一点就是函数调用的频度控制器,是连续执行时间间隔控制.主要应用 ...

  6. JavaScript函数节流(throttle)与函数去抖(debounce)

    对于浏览器窗口大小改变的时候,来动态改变页面元素的大小,可以采用window的resize事件,实现代码: <script type="text/javascript"> ...

  7. JavaScript 防抖(debounce)和节流(throttle)

    防抖函数 触发高频事件后,n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间 /** * * @param {*} fn :callback function * @param {* ...

  8. debounce与throttle区别

    在2011年,Twitter网站曾爆出一个问题:在主页往下滚动时,页面会变得缓慢以致没有响应.John Resig发表了一篇文章< a blog post about the problem&g ...

  9. Debounce 和 Throttle【转载】

    在处理诸如 resize.scroll.mousemove 和 keydown/keyup/keypress 等事件的时候,通常我们不希望这些事件太过频繁地触发,尤其是监听程序中涉及到大量的计算或者有 ...

  10. 函数防抖与函数节流 封装好的debounce和throttle函数

    /** * 空闲控制 返回函数连续调用时,空闲时间必须大于或等于 wait,func 才会执行 * * @param {function} func 传入函数,最后一个参数是额外增加的this对象,. ...

随机推荐

  1. 新手必学matplotlib

    Getting started Installation quick-start Install using pip: pip install matplotlib Install using con ...

  2. vmware网络连接

    vmware提供桥接模式网络连接.网络地址转换 (NAT).仅主机模式网络连接和自定义网络连接选项,用于为虚拟机配置虚拟网络连接.在安装 vmware 时,已在主机系统中安装用于所有网络连接配置的软件 ...

  3. MSF内网信息收集

    1. msf通过shell关闭防火墙 Netsh advfirewall set allprofiles state off(关闭防火墙) Netsh advfirewall show allprof ...

  4. MAC怎么快速截图

    ​ 1.截取全屏 按住[command][shift][3]这三个键即可截取全屏. ​ 编辑 2.截取某区域 按住[command][shift][4]. ​ 编辑 3.截图完成 在电脑桌面能找到截图 ...

  5. ggplot2绘制饼图

    # 加载 ggplot2 包 library(ggplot2) # 加载数据 data <- data.frame(category = c("A", "B&quo ...

  6. 【Go】类型转换

    字符串转int32 package main import ( "fmt" "strconv" ) func main() { str := "123 ...

  7. 文件监控利器-Jnotify

    监听的文件变化的方式有很多,但是比较完美的还是jNotify https://jnotify.sourceforge.net/ 对比一下监控方式的优缺点 方式 缺点 java原生watch 可能对文件 ...

  8. MAMP PRO 使用指南 (配置nginx 重写)

    https://sawlove.com/mamp-pro-use-for-wp.html 1 location / { 2 if (!-e $request_filename) { 3 rewrite ...

  9. LocalDateTime 使用记录

    1.LocalDateTime 获取指定日期的月初和月末 LocalDateTime firstDayTime = LocalDate.now().withMonth(12).withDayOfMon ...

  10. 无线网络技术 实验2 无线网络环境RSSI测试实验

    1.实验目的与要求 ①.了解RSSI的概念和基本原理 ②.掌握RSSI测量过程和方法 ③.不同无线环境下RSSI值测量 2.实验仪器材料:个人计算机 Windows操作系统 个人热点 3.实验过程记录 ...