您的位置:首页 > 编程语言 > Java开发

关于Java script 定时器(timer)的一些使用

2017-12-09 20:22 260 查看
JavaScript提供定时执行代码的功能,叫做定时器(timer),主要由setTimeout()和setInterval()这两个函数来完成。它们向任务队列添加定时任务。

setTimeout函数用来指定某个函数或某段代码,在多少毫秒之后执行。它返回一个整数,表示定时器的编号,以后可以用来取消这个定时器。 简单来说 setTimeout 只是在执行完一次后就不执行了

setTimeout函数接受两个参数,第一个参数function(){}是将要推迟执行的函数名或者一段代码,第二个参数delay是推迟执行的毫秒数

setTimeout(func(){},0);马上执行

setInterval函数的用法与setTimeout完全一致,区别仅仅在于setInterval指定某个任务每隔一段时间就执行一次,也就是无限次的定时执行。

setInterval(function(){xx},1000); 这个表示每隔1秒执行一次函数

在使用setInterval的时候,不同情况下,执行任务的本身所消耗的时间也不同,但是由于指定的时间是开始执行 之间的间隔。如果执行时间过长,超过设置的时间间隔,function执行完就会马上执行第二次

所以为了确保两次执行之间有固定的间隔,可以不用setInterval,而是每次执行结束后,使用setTimeout指定下一次执行的具体时间。

function interval(func, wait){

var interv = function(){

func.call(null);

setTimeout(interv, wait);

};

setTimeout(interv, wait);

}

interval(function(){

console.log(2);

},1000);

setTimeout和setInterval函数,都返回一个表示计数器编号的整数值,将该整数传入clearTimeout和clearInterval函数,就可以取消对应的定时器

setTimeout和setInterval的运行机制是,将指定的代码移出本次执行,等到下一轮 Event Loop 时,再检查是否到了指定时间。如果到了,就执行对应的代码;如果不到,就等到再下一轮 Event Loop 时重新判断。

这意味着,setTimeout和setInterval指定的代码,必须等到本轮 Event Loop 的所有任务都执行完,才会开始执行。由于前面的任务到底需要多少时间执行完,是不确定的,所以没有办法保证,setTimeout和setInterval指定的任务,一定会按照预定时间执行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: