通过实例讲解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 跨域访问解决方案
Feb 14 Javascript
javascript OFFICE控件测试代码
Dec 08 Javascript
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
Jan 22 Javascript
JavaScript列表框listbox全选和反选的实现方法
Mar 18 Javascript
JavaScript 七大技巧(一)
Dec 13 Javascript
angular双向绑定模拟探索
Dec 26 Javascript
浅谈vue-router 路由传参的方法
Dec 27 Javascript
Vue.directive 自定义指令的问题小结
Mar 04 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
Sep 03 Javascript
Mpvue中使用Vant Weapp组件库的方法步骤
May 16 Javascript
微信小程序发布新版本时自动提示用户更新的方法
Jun 07 Javascript
简介JavaScript错误处理机制
Aug 04 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
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
PHP实现路由映射到指定控制器
2016/08/13 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
centos下file_put_contents()无法写入文件的原因及解决方法
2017/04/01 PHP
一个页面放2段图片滚动代码出现冲突的问题如何解决
2012/12/21 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
解析Node.js基于模块和包的代码部署方式
2016/02/16 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
BootStrap 智能表单实战系列(二)BootStrap支持的类型简介
2016/06/13 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
2016/06/13 Javascript
jQuery EasyUI编辑DataGrid用combobox实现多级联动
2016/08/29 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
代码详解javascript模块加载器
2018/03/04 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
[02:06]2018完美世界全国高校联赛秋季赛开始报名(附彩蛋)
2018/09/03 DOTA
Python实现Linux下守护进程的编写方法
2014/08/22 Python
Python编程实现二叉树及七种遍历方法详解
2017/06/02 Python
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
Python类及获取对象属性方法解析
2020/06/15 Python
python实现图片转字符画
2021/02/19 Python
德国大型和小型家用电器网上商店:Energeto
2019/05/15 全球购物
有abstract方法的类一定要用abstract修饰吗
2016/03/14 面试题
父亲生日宴会答谢词
2014/01/10 职场文书
勤俭节约倡议书
2014/04/14 职场文书
车辆转让协议书
2014/04/15 职场文书
委托协议书范本
2014/04/22 职场文书
品酒会策划方案
2014/05/26 职场文书
应用心理学专业求职信
2014/08/04 职场文书
党的群众路线教育实践活动查摆问题自查报告
2014/10/10 职场文书
带你彻底理解JavaScript中的原型对象
2021/04/14 Javascript
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python