博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
利用防抖和节流提高性能
阅读量:3937 次
发布时间:2019-05-23

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

防抖和节流都是为了解决频繁触发某个事件的情况造成的性能消耗。

防抖

当持续触发事件时,只有在一定时间段内没有再触发事件后,事件处理函数才会执行一次。

应用场景:

  1. input输入框搜索功能
  2. window触发resize的时候
  3. 监听浏览器滚动时,最后触发某个事件

以Input输入框搜索为例:

没有防抖时,在输入时不停的触发事件,不停的请求接口加大了性能的损耗

在这里插入图片描述
防抖代码如下:

function debounce (fn,delay) {
let timer = null return function () {
if(timer){
clearTimeout(timer) } timer = setTimeout(fn,delay) }}function search () {
console.log('搜索')}document.getElementById('ipt').oninput = debounce(search,500)

这样我们可以看到,设置了停留500ms后再触发事件,就大大降低了事件的触发次数,节约请求资源

在这里插入图片描述

节流

在规定的时间间隔内,就算重复触发函数,也只成功调用一次

应用场景:

  1. 鼠标不断点击触发
  2. 监听滚动条滚动时,根据滚动条位置触发某个事件
  3. input输入框搜索也可以使用节流

代码如下:

function debounce (fn,delay) {
let timer = true return function () {
if(!timer){
return false } timer = false setTimeout(() => {
fn() timer = true; }, delay) }}function search () {
console.log('搜索')}document.getElementById('ipt').oninput = debounce(search,1000)

可以看到,不管我触发多少次事件,都只会每隔1s才触发一次

在这里插入图片描述

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

你可能感兴趣的文章
多线程专题 - 脉络图
查看>>
javascript 函数,BOM
查看>>
javascript 客户端能力检测
查看>>
javascript DOM详解之DOM1
查看>>
javascript DOM扩展
查看>>
矛盾论读书笔记
查看>>
规则 - 利用CDN缓存
查看>>
什么是统计学中的 Standard Error ( SE )?
查看>>
统计学中的标准差(SD)和 平均值的标准误差(SEM)的区别
查看>>
[数据挖掘与预测分析] 单变量统计分析思考问题
查看>>
[统计学笔记] (十三)指数分析(2)
查看>>
Data Science 到底是什么?
查看>>
机器学习(Machine Learning)和传统的数据统计分析(Data Statistics)有什么区别?
查看>>
统计学、统计学习和统计推断之间的关系
查看>>
PMP笔记:质量管理的七个工具
查看>>
悦读:重新定义公司-谷歌是如何运营的
查看>>
研发主管的烦恼:周一早晨延迟的项目会议
查看>>
研发主管的烦恼:难以执行的绩效考核
查看>>
精益Scrum(五)
查看>>
精益Scrum(六)
查看>>