通过实例讲解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入门学习书籍推荐
Jun 12 Javascript
javascript中setTimeout的问题解决方法
May 08 Javascript
AngularJS的一些基本样式初窥
Jul 27 Javascript
jquery实现鼠标经过显示下划线的渐变下拉菜单效果代码
Aug 24 Javascript
JS实现DIV容器赋值的方法
Dec 14 Javascript
浅析BootStrap模态框的使用(经典)
Apr 29 Javascript
深入分析javascript中console命令
Aug 14 Javascript
微信小程序 页面传值详解
Mar 10 Javascript
AngularJs用户登录问题处理(交互及验证、阻止FQ处理)
Oct 26 Javascript
JS实现移动端在线签协议功能
Aug 22 Javascript
Node.js API详解之 string_decoder用法实例分析
Apr 29 Javascript
如何用JS模拟实现数组的map方法
Jul 30 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
我的论坛源代码(九)
2006/10/09 PHP
PHP在网页中动态生成PDF文件详细教程
2014/07/05 PHP
通过隐藏option实现select的联动效果
2009/11/10 Javascript
Jquery跨域获得Json时invalid label错误的解决办法
2011/01/11 Javascript
仿猪八戒网左下角的文字滚动效果
2011/10/28 Javascript
JS的Document属性和方法小结
2013/09/17 Javascript
IE8的JavaScript点击事件(onclick)不兼容的解决方法
2013/11/22 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
vue Element-ui input 远程搜索与修改建议显示模版的示例代码
2017/10/19 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
简单介绍react redux的中间件的使用
2018/04/06 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
详解ES6 export default 和 import语句中的解构赋值
2019/05/28 Javascript
微信小程序自定义navigationBar顶部导航栏适配所有机型(附完整案例)
2020/04/26 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
Vue实现小购物车功能
2020/12/21 Vue.js
Python的pycurl包用法简介
2015/11/13 Python
解决python文件字符串转列表时遇到空行的问题
2017/07/09 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
Python使用MyQR制作专属动态彩色二维码功能
2019/06/04 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
PYTHON EVAL的用法及注意事项解析
2019/09/06 Python
python中的socket实现ftp客户端和服务器收发文件及md5加密文件
2020/04/01 Python
python中plt.imshow与cv2.imshow显示颜色问题
2020/07/16 Python
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
Boden澳大利亚官网:英国在线服装公司
2018/08/05 全球购物
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
讲座主持词
2014/03/20 职场文书
质量在我心中演讲稿
2014/09/02 职场文书
幼儿园推普周活动总结
2015/05/07 职场文书
2015年林业工作总结
2015/05/14 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
Python中itertools库的四个函数介绍
2022/04/06 Python