博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue 节流(throttle)和防抖(debounce)
阅读量:2121 次
发布时间:2019-04-30

本文共 1213 字,大约阅读时间需要 4 分钟。

throttle 应用场景:鼠标多次点击按钮进行操作,输入框频繁搜索内容等条件下,为节省资源使用节流。(单位时间内只触发一次)

debounce应用场景:滚动加载请求数据,window触发resize的时候,使用防抖函数可以让其只在最后触发一次。

节流(throttle)和防抖(debounce)的区别:函数防抖和函数节流都是防止某一时间频繁触发,防抖和节流原理却不一样。函数防抖是某一段时间内只执行一次,而函数节流是间隔时间执行。节流是在频繁操作的情况下按照给定的时间定时执行,防抖在频繁操作过程中会清楚上次的执行时间重新进行计算,从而只执行一次,类似于人进入电梯时电梯关门时间的处理。

vue文档中有提到debounce,但该在2.0已被属性被移除及处理,推荐lodash

示例:使用 lodash 的防抖函数 (debounce ),进行滚动加载数据的操作(当滚动条距离底部小于30px,请求)

import { debounce } from "lodash";export default { data() { return { tableData:[], isloading: true } }, methods: { getTableData(){ .....此处省略,页数加1,从后台请求table数据,合并,设置加载状态isloading为false }, scrollEvent: debounce(function(e) { //使用防抖函数在停止滚动时加载一次,而不是在滚动过程中多次加载 if (e instanceof Event && !this.isloading) { let el = e.target; let scHeight = el.scrollHeight, scTop = el.scrollTop, clHeight = el.clientHeight; if (scHeight - scTop - clHeight >= 20) { console.log("距离底部的高度", scHeight - scTop - clHeight); return; } else { this.getTableData(); } } }, 500), }}

 

相关资料了解更深的了解:

 

转载地址:http://xxurf.baihongyu.com/

你可能感兴趣的文章
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
iOS常用宏定义
查看>>
什么是ActiveRecord
查看>>
有道词典for mac在Mac OS X 10.9不能取词
查看>>
关于“团队建设”的反思
查看>>
利用jekyll在github中搭建博客
查看>>
Windows7中IIS简单安装与配置(详细图解)
查看>>
linux基本命令
查看>>
BlockQueue 生产消费 不需要判断阻塞唤醒条件
查看>>
强引用 软引用 弱引用 虚引用
查看>>
数据类型 java转换
查看>>
"NetworkError: 400 Bad Request - http://172.16.47.117:8088/rhip/**/####t/approval?date=976
查看>>
mybatis 根据 数据库表 自动生成 实体
查看>>
win10将IE11兼容ie10
查看>>
checkbox设置字体颜色
查看>>
第一篇 HelloWorld.java重新学起
查看>>
ORACLE表空间扩张
查看>>
orcal 循环执行sql
查看>>