通过实例讲解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 相关文章推荐
Jquery数独游戏解析(一)-页面布局
Nov 05 Javascript
jquery制作 随机弹跳的小球特效
Feb 01 Javascript
跟我学习javascript的call(),apply(),bind()与回调
Nov 16 Javascript
jQuery鼠标事件总结
Oct 13 Javascript
JS基于贪心算法解决背包问题示例
Nov 27 Javascript
Vue微信项目按需授权登录策略实践思路详解
May 07 Javascript
Vue-router的使用和出现空白页,路由对象属性详解
Sep 03 Javascript
React 项目迁移 Webpack Babel7的实现
Sep 12 Javascript
vue cli3.0 引入eslint 结合vscode使用
May 27 Javascript
微信小程序版本自动更新的方法
Jun 14 Javascript
JavaScript 继承 封装 多态实现及原理详解
Jul 29 Javascript
微信小程序实现定位及到指定位置导航的示例代码
Aug 20 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数组无限分级数据的层级化处理代码
2012/12/29 PHP
PHP数字前补0的自带函数sprintf 和number_format的用法(详解)
2017/02/06 PHP
js 提交和设置表单的值
2008/12/19 Javascript
Jquery之美中不足小结
2011/02/16 Javascript
javascript对talbe进行动态添加、删除、验证实现代码
2012/03/29 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
文本框只能选择数据到文本框禁止手动输入
2013/11/22 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
JavaScript获取图片像素颜色并转换为box-shadow显示
2016/03/11 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
jQuery检查元素存在性(推荐)
2016/09/17 Javascript
domReady的实现案例
2016/11/23 Javascript
js实现tab切换效果
2017/02/16 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
JS实现给数组对象排序的方法分析
2019/06/24 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
简单的连接MySQL与Python的Bottle框架的方法
2015/04/30 Python
详解Python中dict与set的使用
2015/08/10 Python
Python的socket模块源码中的一些实现要点分析
2016/06/06 Python
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
Python3实现发送QQ邮件功能(html)
2017/12/15 Python
TensorFlow实现模型评估
2018/09/07 Python
详解Python Celery和RabbitMQ实战教程
2021/01/20 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
室内设计自我鉴定
2013/10/15 职场文书
职高毕业生自我鉴定
2013/10/21 职场文书
个人简历自我评价范文
2014/02/04 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
技术岗位竞聘演讲稿
2014/05/16 职场文书
人民的好儿女观后感
2015/06/18 职场文书
如何写好活动总结
2019/06/21 职场文书
MySQL修改默认引擎和字符集详情
2021/09/25 MySQL
mysql 生成连续日期及变量赋值
2022/03/20 MySQL