通过实例讲解JS如何防抖动


Posted in Javascript onJune 15, 2019

前言

这道题目经常与事件触发器同时存在,为了考察面试者在一些具体业务流程上(信息流,搜索框输入查询)等,能否综合的考虑实现思路。

题目

在某些信息列表中一般采用瀑布流,滚动一屏时加载相应的数据,请思考如何避免连续下拉时而产生的问题(可能是页面崩溃,也可能是巨卡无比)。

一般情况下,如果碰到这样的面试题,防抖动机制,就能很好的解决,这方面最早的应用实践还是Twitter,开发者写了一篇博客,详细的阐述了如何解决这样的问题。那么,说到防抖动,其核心内涵在于延迟处理,也就是将一系列的事件处理程序全部延迟,保障推送进来的第一次事件处理。

event.on('scroll', function(e){ 
var fun; 
return function(){ 
if(fun) clearTimeout(fun);
fun = setTimeout(function(){ 
// console.log('1')
},500);
}
}());

这是最常见的一种方式,如果scroll的次数较多时,可以先将真实的函数放置在定时器中。

接下来我们将它抽象一下:

function de(something,delay){ 
var fun; 
return function(){ 
if(fun) clearTimeout(fun);
fun = setTimeout(function(){ 
something();
},delay);
}
}
function scrollToList(){
}
event.on('scroll', de(scrollToList,1000))
event.on('scroll', de(scrollToList,2000))

显然这是一个弱爆了的处理,那有没有更好的方式呢?有,比如节流。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 验证上传图片大小[客户端]
Aug 01 Javascript
JS实现很实用的对联广告代码(可自适应高度)
Sep 18 Javascript
JavaScript数据结构与算法之集合(Set)
Jan 29 Javascript
JS显示日历和天气的方法
Mar 01 Javascript
jQuery选择器基础入门教程
May 10 Javascript
让微信小程序支持ES6中Promise特性的方法详解
Jun 13 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
Jan 08 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
Jan 18 jQuery
详解vue文件中使用echarts.js的两种方式
Oct 18 Javascript
详解微信小程序网络请求接口封装实例
May 02 Javascript
详解微信小程序支付流程与梳理
Jul 16 Javascript
基于Cesium绘制抛物弧线
Nov 18 Javascript
js笔试题-接收get请求参数
Jun 15 #Javascript
深入了解JavaScript 的 WebAssembly
Jun 15 #Javascript
通过实例了解js函数中参数的传递
Jun 15 #Javascript
RxJS的入门指引和初步应用
Jun 15 #Javascript
js中let能否完全替代IIFE
Jun 15 #Javascript
回顾Javascript React基础
Jun 15 #Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
Jun 14 #Javascript
You might like
解析php中获取url与物理路径的总结
2013/06/21 PHP
纯PHP生成的一个树叶图片画图例子
2014/04/16 PHP
php数组去除空值函数分享
2015/02/02 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
EXT窗口Window及对话框MessageBox
2011/01/27 Javascript
js 回车提交表单两种实现方法
2012/12/31 Javascript
javascript抖动元素的小例子
2013/10/28 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
node.js中的fs.chownSync方法使用说明
2014/12/16 Javascript
setinterval()与clearInterval()JS函数的调用方法
2015/01/21 Javascript
javascript实现随时变化着的背景颜色
2015/04/02 Javascript
JQuery ztree带筛选、异步加载实例讲解
2016/02/25 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
js指定步长实现单方向匀速运动
2017/07/17 Javascript
基于iScroll实现下拉刷新和上滑加载效果
2017/07/18 Javascript
vue基于mint-ui实现城市选择三级联动
2020/06/30 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
[01:33]真香警告!DOTA2勇士令状不朽珍藏Ⅱ饰品欣赏
2018/06/26 DOTA
[01:45]典藏宝瓶2+祈求者身心——这就是DOTA2TI9总奖金突破3000万美元的秘密
2019/07/21 DOTA
python 去除txt文本中的空格、数字、特定字母等方法
2018/07/24 Python
Django实现将views.py中的数据传递到前端html页面,并展示
2020/03/16 Python
五种Python转义表示法
2020/11/27 Python
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
JSF的标签库有哪些
2012/04/27 面试题
银行职员个人的工作自我评价
2014/02/15 职场文书
成绩单家长评语大全
2014/04/16 职场文书
温馨提示标语
2014/06/26 职场文书
前台文员岗位职责
2015/02/04 职场文书
忠犬八公的故事观后感
2015/06/05 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
《女娲补天》读后感5篇
2019/12/31 职场文书
Python实现灰色关联分析与结果可视化的详细代码
2022/03/25 Python