settimeout会执行几次 js timer停止

javaScript是单线程语言,但它允许通过设置超时值和间歇时间值来调度代码在特定的时刻执行 。超时值是在指定时间过后执行代码,而间歇值是每隔指定的时间就执行一次代码 。其实就是我们常用的setTimeout()和setInterval() 。
setTimeout()和setInterval()方法很相似,相信很多初学者都知道这个方法吧 。因为很多动画,轮播都会用到这个方法,但是相信很多人和我一样,对于这个方法的一些细节并不是很了解 。

settimeout会执行几次 js timer停止

文章插图
javascript
简单的来说下,这两个方法都是接收两个参数,第一个参数就是指定时间能要执行的函数 。它可以是一段字符串,也可以是一个函数,虽说这两种都是可行的,但是由于传递字符串可能导致性能损失,因此不建议以字符串作为第一个参数 。而第二个参数接收的是一个时间值,通常是以毫秒为单位 。
而在使用这两个方法的时候,我们常常也会伴随着使用另外一个方法,clearTimeout()和clearInterval() 。一般情况下,clearTimeout不常使用,因为setTimeout就只是执行一次就结束,所以不用考虑取消调用函数,而setInterval就不一样了,一般情况下,我们都会设置某个条件下去取消它的重复执行 。而今天的想要说的就是clearInterval()接收的参数 。
调用setTimeout方法和setInterval方法之后,该方法会返回一个数值ID,而这个ID是计划执行代码的唯一标识符,上面说的clearInterval接受的参数就是这个ID值 。所以我们通常会定义一个变量来保存这个值,而之前我一直以为,定义的这个变量是这个方法的指针 。
在使用超时调用时,没有必要跟踪超时调用的ID 。一般认为,使用超时调用来模拟间歇调用的是一种最佳模式 。在开发环境下,很少使用真正的间歇调用,原因是后一个间歇调用可能会在前一个间歇调用结束之前启动 。所以最好不要使用间歇调用 。下面看一个超时调用模拟间歇调用的例子:间隙模式:
var num = 0;var max =10;var intervalId=null;function incrementNumber(){num++;if(num==max){clearInterval(intervalId);alert("Done");}}intervalID=setInterval(incrementNumber,500);
超时模式:
【settimeout会执行几次 js timer停止】var num = 0;var max =10;function incrementNumber(){num++;if(num<max){setTimeout(incrementNumber,500);} else{alert("Done") }}setTimeout(incrementNumber,500);