通过实例讲解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 相关文章推荐
不错的新闻标题颜色效果
Dec 10 Javascript
Some tips of wmi scripting in jscript (1)
Apr 03 Javascript
JS文本框不能输入空格验证方法
Mar 19 Javascript
js遍历、动态的添加数据的小例子
Jun 22 Javascript
用js来获取上传的文件名纯粹是为了美化而用
Oct 23 Javascript
JavaScript实现梯形乘法表的方法
Apr 25 Javascript
如何使用jquery修改css中带有!important的样式属性
Apr 28 Javascript
js原生Ajax的封装和原理详解
Mar 11 Javascript
bootstrap栅格系统示例代码分享
May 22 Javascript
jQuery操作DOM_动力节点Java学院整理
Jul 04 jQuery
JS使用H5实现图片预览功能
Sep 30 Javascript
vue祖孙组件之间的数据传递案例
Dec 07 Vue.js
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获得当前的脚本网址
2007/12/10 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
9个比较实用的php代码片段
2016/03/15 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
Javascript函数式编程简单介绍
2015/10/11 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
JavaScript统计字符串中每个字符出现次数完整实例
2016/01/28 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
JS+Canvas绘制动态时钟效果
2017/11/10 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
vue中el-upload上传图片到七牛的示例代码
2018/10/19 Javascript
js中Array对象的常用遍历方法详解
2019/01/17 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
微信小程序canvas开发水果老虎机的思路详解
2020/02/07 Javascript
Python实现新浪博客备份的方法
2016/04/27 Python
Python 40行代码实现人脸识别功能
2017/04/02 Python
JSON Web Tokens的实现原理
2017/04/02 Python
python调用系统ffmpeg实现视频截图、http发送
2018/03/06 Python
Python把csv数据写入list和字典类型的变量脚本方法
2018/06/15 Python
python人民币小写转大写辅助工具
2018/06/20 Python
python爬虫URL重试机制的实现方法(python2.7以及python3.5)
2018/12/18 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
Win10环境中如何实现python2和python3并存
2020/07/20 Python
Python自动登录QQ的实现示例
2020/08/28 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
经验丰富大学生村干部自我鉴定
2014/01/22 职场文书
电厂职工自我鉴定
2014/02/20 职场文书
党的群众路线教育实践活动动员会主持词
2014/03/20 职场文书
先进个人总结范文
2015/02/15 职场文书
详解CSS开发过程中的20个快速提升技巧
2021/05/21 HTML / CSS
Java基于字符界面的简易收银台
2021/06/26 Java/Android