通过实例讲解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 相关文章推荐
HTML 自动伸缩的表格Table js实现
Apr 01 Javascript
JS window.opener返回父页面的应用
Oct 24 Javascript
使用indexOf等在JavaScript的数组中进行元素查找和替换
Sep 18 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
Jun 24 Javascript
JSON格式化输出
Nov 10 Javascript
js实现鼠标滑过文字链接色彩变化的效果
May 06 Javascript
Js 获取当前函数参数对象的实现代码
Jun 20 Javascript
Bootstrap三种表单布局的使用方法
Jun 21 Javascript
jquery  实现轮播图详解及实例代码
Oct 12 Javascript
express+vue+mongodb+session 实现注册登录功能
Dec 06 Javascript
Angular.JS读取数据库数据调用完整实例
Jul 02 Javascript
原生js实现日历效果
Mar 02 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作为Shell脚本语言使用
2006/10/09 PHP
让PHP更快的提供文件下载的代码
2012/06/13 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
自定义session存储机制避免会话保持问题
2014/10/08 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
jquery实现可拖动DIV自定义保存到数据的实例
2013/11/20 Javascript
jQuery中has()方法用法实例
2015/01/06 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
AngularJS 过滤器(自带和自建)详解
2016/09/19 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
Vue 拦截器对token过期处理方法
2018/01/23 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
Python yield与实现方法代码分析
2018/02/06 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
Python爬虫实现全国失信被执行人名单查询功能示例
2018/05/03 Python
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
pyqt5 从本地选择图片 并显示在label上的实例
2019/06/13 Python
Python3视频转字符动画的实例代码
2019/08/29 Python
Pycharm快捷键配置详细整理
2020/10/13 Python
调用HTML5的Canvas API绘制图形的快速入门指南
2016/06/17 HTML / CSS
比利时香水网上商店:NOTINO
2018/03/28 全球购物
质量提升方案
2014/06/16 职场文书
优秀本科毕业生自荐信
2014/07/04 职场文书
2014年便民服务中心工作总结
2014/12/20 职场文书
会计工作检讨书
2015/02/19 职场文书
高中班主任培训心得体会
2016/01/07 职场文书
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫
python读取并查看npz/npy文件数据以及数据显示方法
2022/04/14 Python
python实现双链表
2022/05/25 Python