JavaScript 函数循环、延时、节流、防抖
函数循环(setInterval)
间隔指定的毫秒数不停地执行指定的代码
<button onclick="myStartFunction()">开始</button>
<button onclick="myStopFunction()">停止</button><script>
var myVar = null; //全局function myTimer(){var d=new Date();var t=d.toLocaleTimeString();document.getElementById("demo").innerHTML=t;
}function myStart() {setInterval(function(){myTimer()},1000); // 开始执行
}function myStopFunction(){clearInterval(myVar); // 停止执行
}
</script>
函数延时(setTimeout)
在指定的毫秒数后执行指定代码
var myVar = null; //全局function myFunction()
{myVar=setTimeout(function(){alert("Hello")},3000);
}function myStopFunction()
{clearTimeout(myVar); //停止执行
}
函数节流(throttle)
规定在一个单位时间内,只能触发一次函数。如果这个单位时间内触发多次函数,只有一次生效。
<button onclick="myFunction()">点击</button>
<script>
// 节流函数
function throttle(fun, delay) {let last, deferTimerreturn function (args) {let that = thislet _args = argumentslet now = +new Date()if (last && now < last + delay) {clearTimeout(deferTimer)deferTimer = setTimeout(function () {last = nowfun.apply(that, _args)}, delay)}else {last = nowfun.apply(that,_args)}}
}function myFunction() {throttle(() => {...}, 1000)
}
</script>
高程中的经典代码:
function throttle(method, context) {clearTimeout(method.tId);method.tId = setTimeout(function () {method.call(context);}, 100)}
应用场景:
1)鼠标不断点击触发,mousedown(单位时间内只触发一次)
2)监听滚动事件,比如是否滑到底部自动加载更多,用throttle来判断
3)视频播放节点上报
函数防抖(debounce)
在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。
function debounce(fun, delay) {return function (args) {let that = thislet _args = argsclearTimeout(fun.id)fun.id = setTimeout(function () {fun.call(that, _args)}, delay)}
}debounce(ajax, 500)
应用场景:
- search搜索联想,用户在不断输入值时,用防抖来节约请求资源。
- window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次
JavaScript 函数循环、延时、节流、防抖相关推荐
- 用javascript函数设置延时执行jQuery
JS里设定延时: 使用SetInterval和设定延时函数setTimeout 很类似. setTimeout 运用在延迟一段时间,再进行某项操作. setTimeout("function ...
- JavaScript 函数节流 throttle 和防抖 debounce
今天和别人聊到JavaScript函数的节流和防抖,发现自己对这两个的区别很是模糊,遂小小实践一下,在此记录,希望对需要的人有所帮助. 节流 - 频繁操作,间隔一定时间去做一件事 举例说明:假定时间间 ...
- JavaScript函数节流和函数防抖
1.为什么需要函数防抖和函数节流? 在浏览器中某些计算和处理要比其他的昂贵很多.例如DOM操作比起非DOM交互需要更多的内存和CPU占用时间.连续尝试进行过多的DOM操作可能会导致浏览器挂起,甚至崩溃 ...
- JavaScript循环延时
JavaScript循环延时 1.setTimeout 2. For 循环加 setTimeout 3. 镶嵌使用 setTimeout 1.setTimeout setTimeout 使用结构:se ...
- c语言随机数循环延迟,C语言生成随机数的函数、延时函数
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面C语言代码使用了生成随机数的函数.延时函数.请大家仔细观察其显示效果. 从以下代码,我们可以得出一个重要的结论:当上述两类函数被放入循环时,应作出一定 ...
- 筱筱看博客(函数柯里化、节流防抖)
今日分享内容 1.颗粒化: 把固定的东西我们可以使用颗粒化单个传值的方式,以实现像继承的这种东西. // 颗粒化function skin(skin) {return function (countr ...
- JavaScript函数防抖与截流
一.在前端开发当中,有些交互事件,会频繁触发.这样会导致我们的页面渲染性能,如果频繁触发接口调用的话,会直接导致服务器性能的浪费. 例如:键盘事件 keyup作为测试 <ul>& ...
- JavaScript函数详细介绍
一.函数介绍 函数就是将实现特定功能的代码封装起来,当我们需要实现特定功能时,直接调用函数实现即可,不需要每次都写一堆代码,实现代码的复用. 函数的作用: 1.实现功能的封装,提高代码复用率 2.用于 ...
- 【JavaScript:语法】javascript函数定义以及常见用法
转载:javascript函数定义以及常见用法 javascript函数定义以及常见用法 我们知道,js函数有多种写法,函数声明 ,函数表达式,Function式构造函数,自执行函数,包括Es6的箭头 ...
最新文章
- 突发 | Yann LeCun卸任!Facebook变天,做AI不能落地是不成了
- js date 前一天
- mysql有nvarchar类型_mysql如何处理varchar与nvarchar类型中的特殊字符
- [html] history和hash两种路由方式的最大区别是什么?
- 解决: idea 修改 jsp 后,页面刷新无效
- linux 驱动读写文件,Linux下读写寄存器
- 【Laravel】使用 Laravel Excel 实现 Excel/CSV 文件导入导出功能
- 哪个服务器可以玩无限火力,lol无限火力2018开放时间 国服测试服已登录 网友:希望这次不要骗人!...
- Astar寻路教程!
- Android系统中SD卡各文件夹名称功能详解
- linux用独显运行steam,修复在Linux系统上与Nvidia不兼容的Steam游戏
- Sybase数据库的备份
- WIN7系统下安装SQLServer2000 + sp4数据库报错之解决办法
- android view 3d,Android 使用ViewPager打造3D画廊效果
- DS18B20温度传感器c语言编程,单片机中使用DS18B20温度传感器C语言程序(参考7)(DS18B20 测...
- word 尾注 脚注_如何在Microsoft Word中使用脚注和尾注
- 14.Vue cli脚手架安装
- win7无法访问win10计算机,共享服务,教您win10共享文件夹无法访问怎么办
- 港科夜闻|香港科大校长史维教授获颁法国荣誉军团军官勋章(Officier de la Légion d'Honneur)...
- AutoMapper的配置方法
热门文章
- 【转】Android图片加载神器之Fresco-加载图片基础[详细图解Fresco的使用]
- * 类描写叙述:字符串工具类 类名称:String_U
- PHP笔记——java程序员看懂PHP程序
- 【C++模板】特化与偏特化 template [partial] specialization
- 网络信息系统(NIS服务器)
- 165. 比较版本号
- node.js gbk编码_如何使用Node.js将Chrome的霸王龙编码为电报游戏
- MySQL基础操作(一)
- js中判断值不等于undefined
- dubbo接口快速测试技巧