时间间隔与暂停


JavaScript支持暂停和时间间隔,这可有效地告诉浏览器应该何时执行某行代码。所谓暂停,是在指定的毫秒数后执行指定的代码。时间间隔是反复执行指定的代码,每次执行之间等待指定的毫秒数。

可以用window对象的setTimeout()方法设置暂停。该方法接受两个参数,要执行的代码和在执行它之前要等待的毫秒数(1/1000秒)。第一个参数可以是代码串(与eval()函数和参数相同),也可是函数指针。例如,下面的代码都在1秒钟后显示一条警告:

setTimeout("alert('Hell world!')",1000);
setTimeout(function(){alert(
'Hell world!');},1000);

当然,还可以引用以前定义的函数:
function sayHelloWorld(){
     alert(
'Hell world!');
}

setTimeout(sayHelloWorld,
1000);

调用setTimeout()时,它创建一个数字暂停ID,与操作系统中的进程ID相似。暂停ID本质上是要延迟的进程的ID,在调用setTimeout()后,就不应该再执行它的代码。要取消还未执行的暂停,可调用clearTimeout()方法,并将暂停ID传递给它:

var iTimeoutId=setTimeout("alert('Hell world!')",1000);
//nevermind
clearTimeout(iTimeoutId);


时间间隔与暂停的运行方式相似,只是它无限次地每隔指定的时间段就重复一次指定的代码。可调用setInterval()方法设置时间间隔,它的参数与setTimeout()相同,是要执行的代码和每次执行之间等待的毫秒数。例如:

setInterval("alert('Hell world!')",1000);
setInterval(function(){alert(
'Hell world!');},1000);

function sayHelloWorld(){
  alert(
'Hell world!');
}

setInterval(sayHelloWorld,
1000);
此外,与setTimeout()类似,setInterval()方法也创建时间间隔ID,以标识要执行的代码。ClearInterval()方法可用这个ID阴止再次执行该代码。显示,这一点在使用时间间隔时更重要,因为如果不取消时间间隔,就会一直执行它,直到页面被卸载为止。下面是时间间隔用法的一个常见示例:
var iNum=0;
var iMax
=100;
var iIntervalId
=null;

function incNum(){
   iNum
++;
   
if(iNum==iMax){
       clearInterval(iIntervalId);
   }
}

iIntervalId
=setInterval(incNum,500);

在这段代码中,每隔500毫秒,就对数字iNum进行一次增量运算,直到它达到最大值(iMax),此时该时间间隔将被清除。也可用暂停实现该操作,这样即不必跟踪时间间隔的ID,代码如下:
var iNum=0;
var iMax
=100;

function incNum(){
   iNum
++;
   
if(iNum != iMax){
      setTimeout(incNum,
500);
   }
}

setTimeout(incNum,
500);

这段代码使用链接暂停,即setTimeout()执行的代码也调用了setTimeout()。如果在执行过增量运算后,iNum不等于iMax,就调用setTimeout()方法。不必跟踪暂停ID,也不必清除它,因为代码执行后,将销毁暂停ID。

原文地址:https://www.cnblogs.com/xvqm00/p/1399845.html