博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
什么是Javascript函数节流?
阅读量:6448 次
发布时间:2019-06-23

本文共 711 字,大约阅读时间需要 2 分钟。

现在javascript的用途 真的很广,感觉什么事都可以做,比如做视频监控,时刻看看你喜欢的人再做什么,哎呀妈呀,这可是犯法的,不行不行。

最近工作上遇到个需求,:一个原本是pc端框架配置的需求,现在领导突然急着要,让我从pc端兼容移动的大小,瞬间脑壳疼,由于用的都是px单位,不好真疼,然后就想到根据浏览器窗口改变的时候需要改一些页面元素大小原大小

clipboard.png

配置成移动的的时候

clipboard.png

function resizehandler(){

console.log(new Date().getTime());console.log(++n);

}

然后我试着拖拽窗口,看了下控制台居然打印了50几次,这并不是我想要的,作为一个合理的代码,是只需要执行一次的,可能函数里面的代码很复杂,但却是我想要的。
网上搜了下JavaScript高级程序设 中有专门应对此问题的函数节流

原理很简单,利用定时器,让函数执行延迟500毫秒,在500毫秒内如果有函数又被调用则删除上一次调用,这次调用500毫秒后执行,如此往复

let n=0;
function resizehandler(){

console.log(new Date().getTime());console.log(++n);

}

function fn(cb,context){

clearTimeout(cb.Tid);cb.Tid=setTimeout(function(){    cb.call(context);},500);

}

window.οnresize=function(){

fn(resizehandler,window);

};

这样就实现了想要的效果

clipboard.png

转载地址:http://bqlwo.baihongyu.com/

你可能感兴趣的文章
CSS Display(显示) and Visibility(可见性)
查看>>
java web中用于检测用户是否登陆的过滤器(Filter - 3)
查看>>
XUtils-DbUtils使用笔记
查看>>
更快学会任何东西的终极指南
查看>>
树莓派直接挂载Iphone手机导出照片
查看>>
网络延时与抖动
查看>>
Flask+Redis维护代理池
查看>>
IOS中使用UIWebView 加载网页、文件、 html的方法
查看>>
跨域资源共享(CORS)安全性浅析
查看>>
linux(centos)搭建SVN服务器
查看>>
向mysql看齐!
查看>>
使用coffeescript-maven-plugin,实时监控coffee文件的编译,只需一步配置
查看>>
Java Concurrent--线程封闭和实例封闭
查看>>
程序员的生存技巧 —— 搜索技巧
查看>>
Android第三方应用分享图文到微信朋友圈 & 微信回调通知分享状态
查看>>
Android8.0运行时权限策略变化和适配方案
查看>>
Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释
查看>>
logback
查看>>
对日期时间进行转换
查看>>
需求中如何画用例图
查看>>