十年专注于品牌网站建设 十年专注于品牌网站建设,低调、有情怀的网络应用服务商!
南昌百恒网络微信公众号 扫一扫关注
小程序
tel-icon全国服务热线:400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络微信小程序

百恒网络

南昌百恒网络

间歇setlnterval()调用和超时setTimeout()调用方法详细介绍

百恒网络 2013-05-11 2249

JavaScript是单线程语言,但它允许通过设置超时值和间歇时间值来调度代码在特定的时刻执行。前者是在指定的时间过后执行代码,而后者则是每隔指定的时间就执行一次代码。

超时调用需要使用window对象的setTimeout()方法,它接受两个参数:要执行的代码和以毫秒表示的时间(即在执行代码前需要等待多少毫秒)。其中,第一个参数可以是一个包含JavaScript代码的字符串(就和在eval()函数中使用的字符串一样),也可以是一个函数。例如,下面对

setTimeout()的两次调用都会在一秒钟后显示一个警告框:

//不建议传递字符串!

setTimeout('alert(’Hello worldl’) “, 1000);

//推荐的调用方式

setTimeout( function() {

alert( "Hello world!");

}, 1000);

虽然这两种调用方式都没有问题,但由于传递字符串可能导致性能损失,因此南昌网站建设公司工程师不建议以字符串作为第一个参数。

调用setTimeout()之后,该方法会返回一个数值ID,表示超时调用。这个超时调用ID是计划执行代码的唯一标识符,可以通过它来取消超时调用。要取消尚未执行的超时调用计划,可以调用clearTimeout()方法并将相应的超时调用ID作为参数传递给它,如下所示:

//设置超时调用

var timeoutld=setTimeout( fune tion() (

alert( "Hello world!");

), lOOO) ;

//注意:把它取消

clearTimeout(timeoutld);

只要是在指定的时间尚未过去之前调用clearTimeout(),就可以完全取消超时调用。前面的代码在设置超时调用之后马上又调用了clearTimeout(),结果就跟什么也没有发生一样。

超时调用的代码都是在全局作用域中执行的,因此函数中this的值通常会指向window对象。

间歇调用与超时调用类似,只不过它会按照指定的时间间隔重复执行代码,直至间歇调用被取消或者页面被卸载。设置间歇调用的方法是setlnterval(),它接受的参数与setTimeout()相同:要执行的代码(字符串或函数)和每次执行之前需要等待的毫秒数。下面来看一个例子:

//不建议传递字符串!

setlnterval ("alert('Hello world!') 0);

//推荐的调用方式

setlnterval( function() {’

alert( "Hello worldl");

}, 10000);

调用setlnterval()方法同样也会返回一个间歇调用ID,该ID可用于在将来某个时刻取消间歇调用。要取消尚未执行的间歇调用,可以使用clearlnterval()方法并传人相应的间歇调用ID。取消间歇调用的重要性要远远高于取消超时调用,南昌网站设计公司技术人员认为在不加干涉的情况下,间歇调用将会一直执行到页面卸载。以下是一个常见的使用间歇调用的例子:

var num=O:

var max=10;

var intervalld=null;

function incrementNumber() {

num++:

//如果执行次数达到了max设定的值,则取消后续尚未执行的调用

if (num==max) {

clearlnterval(intervalld);

alert("Done");

}

}

intervalld=setlnterval( incrementNurnber, 500)j

在这个例子中,变量mun每半秒钟递增一次,当递增到最大值时就会取消先前设定的间歇调用。这个模式也可以使用超时调用来实现,如下所示:

var num=O:

var max=10;

function incrementNumber() {

num++:

}

可见,在使用超时调用时,没有必要跟踪超时调用ID,因为每次执行代码之后,如果不再设置另一次超时调用,调用就会自行停止。一般认为,使用超时调用来模拟间歇调用的是一种最佳模式。南昌网络公司技术人员认为在开发环境下,很少使用真正的间歇调用,原因是后一个间歇调用可能会在前一个间歇调用结束之前启动,而像前面示例中那样使用超时调用,则完全可以避免这一点。所以,最好不要使用间歇调用。

本文仅限内部技术人员学习交流,不得作于其他商业用途.文章出自:南昌网站制作公司-百恒网络 http://www.jxbh.cn 如转载请注明出处!


400-680-9298,0791-88117053
扫一扫关注百恒网络微信公众号
扫一扫打开百恒网络小程序

欢迎您的光顾,我们将竭诚为您服务×

售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售前咨询 售前咨询
 
售后服务 售后服务
 
售后服务 售后服务
 
备案专线 备案专线
 
×