debounce还是throttle(去抖和节流)
debounce 去抖
我的理解很简单,比方说window.onscroll会疯狂触发handler,此时给它一个debounce(handler, delayTime).
就是不管你延时时间内触发了多少hanlder,我最后只执行一次。(理解把之前多次触发合并成一次,节省浏览器工作)
function debounce(fn, delay) {
var ctx
var args
var timer = null
var later = function () {
fn.apply(ctx, args)
timer = null
}
return function () {
ctx = this
args = arguments
if (timer) {
clearTimeout(timer)
timer = null
}
timer = setTimeout(later, delay)
}
}
throttle 节流
不管你怎么触发#24,反正我就是固定时间内必定触发一次
function throttle(fn, delay) {
var ctx
var args
var previous = Date.now()
var later = function () {
fn.apply(ctx, args)
}
return function () {
ctx = this
args = arguments
var now = Date.now()
var diff = now - previous - delay
if (diff >= 0) {
previous = now
setTimeout(later, delay)
}
}
}
以上参考地址:https://segmentfault.com/a/1190000005926579
我在想 throttle可以这样改吗。。。
function throttle(fn, delay) {
var ctx
var args
var timer = null
var later = function () {
fn.apply(ctx, args)
timer = null
}
return function () {
ctx = this
args = arguments
if (timer) return
timer = setTimeout(later, delay)
}
}
哈哈这段我没测试鸭(懒癌)。错了请告诉我我删掉
debounce还是throttle(去抖和节流)的更多相关文章
- JS的去抖、节流
去抖(debounce) 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时. //模拟一段ajax请求 function ajax(content) { console.log('aj ...
- vue项目中的去抖与节流
节流 // fn是我们需要包装的事件回调, interval是时间间隔的阈值 function throttle(fn, interval) { let last = 0; // last为上一次触发 ...
- JS 函数节流和去抖
1.什么是节流和去抖? 节流.就是拧紧水龙头让水少流一点,但是不是不让水流了.想象一下在现实生活中有时候我们需要接一桶水,接水的同时不想一直站在那等着,可能要离开一会去干一点别的事请,让水差不多流满一 ...
- 节流(Throttling)和去抖(Debouncing)详解
这篇文章的作者是 David Corbacho,伦敦的一名前端开发工程师.之前我们有一篇关于”节流”和”去抖”的文章:The Difference Between Throttling and Deb ...
- hover时显示可跟随鼠标移动的浮动框,运用函数节流与去抖进行优化
在很多笔试面试题中总能看到js函数去抖和函数节流,看过很多关于这两者的讨论,最近终于在一个需求中使用了函数去抖(debounce)和函数节流(throttle). 需要完成的效果是,鼠标在表格的单元格 ...
- 理解JavaScript中的去抖函数
何为去抖函数?在学习JavaScript去抖函数之前我们需要先弄明白这个概念.很多人都会把去抖跟节流两个概念弄混,但是这两个概念其实是很好理解的. 去抖函数(Debounce Function),是一 ...
- (转)JavaScript-性能优化之函数节流(throttle)与函数去抖(debounce)
JavaScript-性能优化之函数节流(throttle)与函数去抖(debounce) 函数节流,简单地讲,就是让一个函数无法在很短的时间间隔内连续调用,只有当上一次函数执行后过 ...
- JavaScript性能优化之函数节流(throttle)与函数去抖(debounce)
函数节流,简单地讲,就是让一个函数无法在很短的时间间隔内连续调用,只有当上一次函数执行后过了你规定的时间间隔,才能进行下一次该函数的调用. 函数节流的原理挺简单的,估计大家都想到了,那就是定时器.当我 ...
- JavaScript函数节流(throttle)与函数去抖(debounce)
对于浏览器窗口大小改变的时候,来动态改变页面元素的大小,可以采用window的resize事件,实现代码: <script type="text/javascript"> ...
随机推荐
- cocos2dx luajavaBridge 学习笔记
我在网上看到了 LuaJavaBridge 的 使用方法这篇文章 https://segmentfault.com/a/1190000004252394?utm_source=tuicool& ...
- 转载 - JSONObject简介
出处: http://www.cnblogs.com/java-pan/archive/2012/04/07/JSONObject.html JSONObject简介 本节摘要:之前对JSON做了 ...
- [K/3Cloud]如何解决K3Cloud 2.0审批流提交时报“队列不存在,或您没有足够的权限执行该操……
按照图上的操作即可解决不可提交的问题,但如果应用服务器是部署在域环境下,应该不会出错,这是微软support上说的
- php获取代理服务器真实内网IP方法
功能:获取用户真实IP地址,代理服务器内网IP,防HTTP_CDN_FORWARDED_FOR注入 function getIP() { if (isset($_SERVER["HTTP_ ...
- 如何基于udp实现tcp协议栈
http://bbs.csdn.net/topics/280046868 使用套接字完成,按照tcp的方式在一个套接字里维持一个状态机. //定义枚举: enmu state{ CLOSED,//没有 ...
- 一个性能较好的jvm參数配置以及jvm的简单介绍
一个性能较好的webserverjvm參数配置: -server //服务器模式 -Xmx2g //JVM最大同意分配的堆内存,按需分配 -Xms2g //JVM初始分配的堆内存.一般和Xmx配置成一 ...
- Python3基础(九) 错误和异常
本文主要介绍Python中的错误和异常,涉及到简单的异常处理.抛出异常以及清理动作.至于自定义异常类,将在介绍类与继承的时候讲到. 一.定义 常见的两种错误:语法错误 和 异常. 1.语法错误(Syn ...
- LeetCode 929. Unique Email Addresses (独特的电子邮件地址)
题目标签:String 题目说明 有两个规则针对于 local name. 所以先把local name 和 domain name 分开. 两个规则是: rule 1:'.' 会被去除. (利用re ...
- cgi程序读取post发送的特殊字符,尤其适合于微信公众平台开发中发送被动消息
[问题]用c编写cgi程序怎样取出html表单post来的数据? [分析]html表单post来的数据形如username="zhang"&&password=&q ...
- MongoDB集群——副本集
1. 副本集的结构及原理 副本集包括三种节点:主节点.从节点.仲裁节点.主节点负责处理客户端请求,读.写数据, 记录在其上所有操作的oplog: 从节点定期轮询主节点获取这些操作,然后对自己的数据副本 ...