函数节流
来源:互联网 发布:数组是原生类吗 编辑:程序博客网 时间:2024/04/29 11:27
函数节流,简单地讲,就是让一个函数无法在很短的时间间隔内连续调用,只有当上一次函数执行后过了你规定的时间间隔,才能进行下一次该函数的调用。以impress上面的例子讲,就是让缩放内容的操作在你不断改变窗口大小的时候不会执行,只有你停下来一会儿,才会开始执行。
- 原理
定时器。当我触发一个事件时,先setTimout让这个事件延迟一会再执行,如果在这个时间间隔内又触发了事件,那我们就clear掉原来的定时器,再setTimeout一个新的定时器延迟一会执行,就这样。 代码实现
function throttle(method,context){ clearTimeout(method.tid); method.tid = setTimeout(function(){ method.call(context); },100);}//调用的时候window.onresize=function(){ throttle(myFunc);}
impress方法实现
//闭包封装,让等待时间成为一个变量var throttle = function(fn,delay){ var timer = null; return function(){ var context = this, args = arguments; //闭包中传递参数 clearTimeout(timer); timer = setTimeout(function(){ fn.apply(context,args); },delay); };};//调用window.onresize = throttle(myFunc,100);
深化函数节流
函数节流让一个函数只有在你不断触发后停下来歇会才开始执行,中间你操作得太快它直接无视你。这样做就有点太绝了
深化就是每隔一定的时间,不管你是否还在继续拖拽,都会执行resize,让用户得到响应。(楼主最近的用户界面课刚考完试,系统的反馈对用户来说是相当重要滴,直接影响到用户是否会继续使用的问题)var throttle = function(fn,delay,mustRunDelay){ var timer = null; var time_start; return function(){ var context = this,args = arguments,time_current = +new Date(); clearTimeout(timer); if(!time_start){ time_start = time_current; } if(time_current - time_start >= mustRunDelay){ fn.apply(context,args); time_start = time_current; //执行完之后,要将start的值设为当前时间开始计算 } else{ timer = setTimeout(function(){ fn.apply(context,args); },delay); } };};//调用window.onresize = throttle(myFunc,50,100); //每隔100ms都会执行一次
1 0
- 节流函数--节流模式
- 节流函数
- 函数节流
- 函数节流
- 节流函数
- 函数节流
- 函数节流
- JavaScript 函数节流
- javascript的函数节流
- javascript 函数节流
- oc 函数节流
- js函数节流
- 重视函数节流
- JS函数节流
- js函数节流
- 【JavaScript】函数节流
- JavaScript中的函数节流
- JS函数节流
- CentOS7安装Oracle 11gR2 图文详解 1
- 在jsp中自定义对话框,添加遮罩
- svn merge 指定版本号
- 根据路径创建文件夹(多级创建)
- 使用MACD指标在上证指数000001.SH上开发单边多头策略
- 函数节流
- Nginx中unknown directive "if(!-f"解决方案
- Ps抠图的那些事情
- 数据结构:实验七——二叉树的层序遍历
- 窗口宽度控制-利用箭头(button)控制滚动条
- Kotlin如何成为我们Android开发的主要语言
- java基础8
- 为什么在元素设置float之后就可以改变宽和高了呢?
- 深入学习页面优化之页面渲染原理