通过实例讲解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 08 Javascript
JS中for循序中延迟加载动态效果的具体实现
Aug 18 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
Nov 21 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
Aug 17 Javascript
jquery对象与DOM对象转化
Feb 08 Javascript
bootstrap折叠调用collapse()后data-parent不生效的快速解决办法
Feb 23 Javascript
详解vue与后端数据交互(ajax):vue-resource
Mar 16 Javascript
Angular2 组件间通过@Input @Output通讯示例
Aug 24 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
Sep 28 Javascript
Bootstrap Table实现定时刷新数据的方法
Aug 13 Javascript
layui问题之模拟select点击事件的实例讲解
Aug 15 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
Mar 01 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
30 个很棒的PHP开源CMS内容管理系统小结
2011/10/14 PHP
PHP入门经历和学习过程分享
2014/04/11 PHP
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
PHP 微信扫码支付源代码(推荐)
2016/11/03 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
php cli模式下获取参数的方法
2017/05/05 PHP
php 字符串中是否包含指定字符串的多种方法
2018/04/12 PHP
PHP实现的日历功能示例
2018/09/01 PHP
用javascript获取textarea中的光标位置
2008/05/06 Javascript
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
javascript实现炫酷的拖动分页
2015/05/11 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
2021/01/27 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
2018/05/04 Javascript
JavaScript实现图片的放大缩小及拖拽功能示例
2019/05/14 Javascript
稍微学一下Vue的数据响应式(Vue2及Vue3区别)
2019/11/21 Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
2020/11/11 Javascript
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
python使用datetime模块计算各种时间间隔的方法
2015/03/24 Python
通过python3实现投票功能代码实例
2019/09/26 Python
在python中利用dict转json按输入顺序输出内容方式
2020/02/27 Python
Python日志处理模块logging用法解析
2020/05/19 Python
python re的findall和finditer的区别详解
2020/11/15 Python
大学应届毕业生个人求职信
2013/09/23 职场文书
土木工程应届生自荐信
2013/09/24 职场文书
个人自我鉴定怎么写
2013/10/28 职场文书
学生思想表现的评语
2014/01/30 职场文书
通用自荐信范文
2014/03/14 职场文书
高中家长寄语
2014/04/02 职场文书
主要负责人任命书
2014/06/06 职场文书
重点工程汇报材料
2014/08/27 职场文书
银行授权委托书格式
2014/10/10 职场文书
保送生自荐信
2015/03/06 职场文书
入党团支部推荐意见
2015/06/02 职场文书