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)

应用场景:

  1. search搜索联想,用户在不断输入值时,用防抖来节约请求资源。
  2. window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401464.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bash知识点:文件测试

bash知识点&#xff1a;文件测试&#xff08;测试文件是否存在&#xff0c;文件是某种类型&#xff09;单目测试-e file:测试文件是是否存在-a file&#xff1a;测试文件是是否存在-f file&#xff1a;测试是否为普通文件,是为真&#xff0c;否则为假-d file&#xff1a;测试是…

MVC 4 教程

MVC4 前件&#xff1a;visual studio 10 sp1 http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4 &#xff08;by Rick Anderson&#xff09; Music Store (by Jon Galloway) http://www.asp.net/mvc/tutorials/mvc-music-sto…

Linux下java/bin目录下的命令集合

Linux下JAVA命令&#xff08;1.7.0_79&#xff09; 命令 详解 参数列表 示例 重要程度 资料 appletviewer Java applet 浏览器。appletviewer 命令可在脱离万维网浏览器环境的情况下运行 applet。 Usage: appletviewer <options> url(s) where <options> …

火车采集小结

采集一个页面全部内容的正则&#xff1a;^(?<content>[\s\S]*?)$转载于:https://www.cnblogs.com/afish/p/3984680.html

vscode 开发常用

设置缩进空格&#xff1a;2个| 4个 文件–》首选项–》设置 代码缩进对齐 &#xff1a; Ctrl [ 和 Ctrl ] 实现文本的向左移动或者向右移动&#xff1b; Shift Alt F 实现代码的对齐

新手应该如何Javascript,JDom,JQuery,DWZ。。

作为web前端程序员来说想必这些东西大家都很熟悉了...但是作为初学者来说,如何学习 是一个很重要的问题,其实这些东西并不难,只是我们在学习的时候没有理清楚他们之间的概念导致我们盲目的学习, 以我自己为例子&#xff0c;希望能帮助到大家的学习。 在这之前我假设大家理解了…

gulp+PC前端静态页面项目开发

前言&#xff1a; 现在单页面很流行&#xff0c;但是在 PC 端多页面还是常态&#xff0c;所以构建静态页面的工具还有用武之地 gulp构建前言&#xff1a; 如今我们开发web网页的方式主要有几种&#xff0c;使用vue-cli、create-react-app、webpack、不借助构建工具等实现单页…

Struts2中jsp前台传值到action后台的三种方式以及valueStack的使用

struts2中的Action接收表单传递过来的参数有3种方法&#xff1a; 如&#xff0c;登陆表单login.jsp&#xff1a; 1 <form action"login" method"post"name"form1"> 2 3 4   用户名&#xff1a;<s:textfieldname"username&quo…

【Linux】vi编辑器命令

1)进入vi的命令 vi filename : 打开或新建文件&#xff0c;并将光标置于第一行首 vi n filename : 打开文件&#xff0c;并将光标置于第n行首 vi filename : 打开文件&#xff0c;并将光标置于最后一行首 vi /pattern filename: 打开文件&a…

The Architecture of Open Source Applications

http://www.aosabook.org/en/index.html 有 nginx http://www.aosabook.org/en/nginx.html转载于:https://www.cnblogs.com/cloudstorage/archive/2012/07/12/2588196.html

html2canvas生成海报的各种问题

html2canvas&#xff08;一&#xff09;官网下载安装&#xff08;二&#xff09;基础用法&#xff08;三&#xff09;生成海报问题canvas高分屏下的模糊问题html2canvas图片模糊问题canvas图片getImageData,toDataURL跨域问题1) 首先&#xff0c;图片服务器需要配置Access-Cont…

Bootstrap中DropDown插件显示下拉列表,点击下拉列表区域,不会再自动关闭。

目标&#xff1a; Bootstrap中DropDown插件显示下拉列表&#xff0c;点击下拉列表区域&#xff0c;不会再自动关闭。 参考&#xff1a;http://v3.bootcss.com/javascript/#dropdowns // http://stackoverflow.com/questions/19740121/keep-bootstrap-dropdown-open-when-cl…

前端字符串内HTML标签无效的处理方式

1&#xff09;将元素的innerText 赋值成 元素的 innerHTML。即可避免转义的问题&#xff0c;将字符串中包含的 HTML标签生效。 <div ref"introContent" class"intro__content">{{intro}}</div>mounted() {// let text this.$refs.introConte…

获取当前目录绝对路径

echo offecho 当前盘符&#xff1a;%~d0echo 当前盘符和路径&#xff1a;%~dp0echo 当前批处理全路径&#xff1a;%~f0echo 当前盘符和路径的短文件名格式&#xff1a;%~sdp0echo 当前CMD默认目录&#xff1a;%cd%echo 目录中有空格也可以加入""避免找不到路径echo 当…

【CSS】css特殊性-优先级-权重

注&#xff1a;文章来源&#xff1a;《css权威指南》 第三章。 部分未予记录css选择器可以用多种方式去选择元素&#xff0c;实际上一个元素可以由使用两个或者多个规则来匹配&#xff0c;每个规则都有各自的选择器。请看例子CSS:h1 {color: red;}body h1 {color: green;}h2.gr…

vue开发问题积累

mounted钩子中使用$refs出现undefined 原因&#xff1a;如果在DOM结构中的某个DOM节点使用了v-if、v-show或者v-for&#xff08;即根据获得的后台数据来动态操作DOM&#xff0c;即响应式&#xff09;&#xff0c;那么这些DOM是不会再mounted阶段找到的。 **解决方法&#xff1…

动态规划0—1背包问题

动态规划0-1背包问题 问题描写叙述&#xff1a;给定n种物品和一背包。物品i的重量是wi&#xff0c;其价值为vi&#xff0c;背包的容量为C。问应怎样选择装入背包的物品&#xff0c;使得装入背包中物品的总价值最大?对于一种物品&#xff0c;要么装入背包&#xff0c;要么不装。…

Android Intent.FLAG_NEW_TASK详解,包括其他的标记的一些解释

本文大部分参考自 http://blog.csdn.net/mayingcai1987/article/details/6200909 &#xff0c;对原文中的讲解FLAG_NEW_TASK地方加了一些自己的观点&#xff0c;用红色标记 1. Task是包含一系列Activity的堆栈, 遵循先进后出原则. 2. Task默认行为: (1) 前提: Activity A和Ac…

vmstat命令详解

参数详情&#xff1a; r runingb blockswpd 虚拟内存使用时间free 物理free内存buff 从硬盘--->内存的 缓冲cache 从内存--->硬盘的 缓存si 从磁盘写入swap的大小/sso 从swap写入磁盘的大小/sbi 块设备每秒接收的块数量bo 块设备每秒发送的块数量cs 每秒上下文切换次数us…

CSharp设计模式读书笔记(22):策略模式(学习难度:★☆☆☆☆,使用频率:★★★★☆)...

策略模式(Strategy Pattern)&#xff1a;定义一系列算法类&#xff0c;将每一个算法封装起来&#xff0c;并让它们可以相互替换&#xff0c;策略模式让算法独立于使用它的客户而变化&#xff0c;也称为政策模式(Policy)。 模式角色与结构&#xff1a; 示例代码&#xff1a; usi…