通过实例讲解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 相关文章推荐
Gird组件 Part-3:范例RSSFeed Viewer
Mar 10 Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 Javascript
Jquery Change与bind事件代码
Sep 29 Javascript
jQuery中的编程范式详解
Dec 15 Javascript
js改变embed标签src值的方法
Apr 10 Javascript
BootStrap中Datepicker控件带中文的js文件
Aug 10 Javascript
Bootstrap复选框和单选按钮美化插件(推荐)
Nov 23 Javascript
Mac中安装nvm的教程分享
Dec 11 Javascript
Vue对象赋值视图不更新问题及解决方法
Jun 03 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
Jul 19 Javascript
解决vuex数据异步造成初始化的时候没值报错问题
Nov 13 Javascript
微信小程序图片右边加两行文字的代码
Apr 23 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
Discuz! 5.0.0论坛程序中加入一段js代码,让会员点击下载附件前自动弹出提示窗口
2007/04/18 PHP
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
PHP简单实现无限级分类的方法
2016/05/13 PHP
破除一些网站复制、右键限制
2006/11/04 Javascript
javascript 检测浏览器类型和版本的代码
2009/09/15 Javascript
解决表单中第一个非隐藏的元素获得焦点的一个方案
2009/10/26 Javascript
YUI的Tab切换实现代码
2010/04/11 Javascript
js中判断控件是否存在
2010/08/25 Javascript
在JQuery dialog里的服务器控件 事件失效问题
2010/12/08 Javascript
使用js判断控件是否获得焦点
2014/01/03 Javascript
使用typeof判断function是否存在于上下文
2014/08/14 Javascript
原生javascript获取元素样式
2014/12/31 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
JS正则表达式比较常见用法
2016/01/26 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
前端jquery部分很精彩
2016/05/03 Javascript
详解Webpack + ES6 最新环境搭建与配置
2018/06/04 Javascript
vue路由跳转传参数的方法
2019/05/06 Javascript
JavaScript 接口原理与用法实例详解
2020/05/12 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
[02:23]完美世界全国高校联赛街访DOTA2第一期
2019/11/28 DOTA
在Django中管理Users和Permissions以及Groups的方法
2015/07/23 Python
简单了解Python生成器是什么
2019/07/02 Python
解决django 新增加用户信息出现错误的问题
2019/07/28 Python
NumPy中的维度Axis详解
2019/11/26 Python
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
如何利用find命令查找文件
2015/02/07 面试题
自我评价的正确写法
2013/09/19 职场文书
学习十八大报告感言
2014/02/04 职场文书
学习经验交流会主持词
2014/04/01 职场文书
党员三严三实对照检查材料
2014/10/13 职场文书
2014社区健康教育工作总结
2014/12/16 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
mysql如何配置白名单访问
2021/06/30 MySQL
使用scrapy实现增量式爬取方式
2022/06/21 Python