JavaScript中的timer
JavaScript中的timer可以让我们延时执行代码或者周期性地执行代码,很好地实现了JavaScript的异步编程特性。
使用setTimeout函数,可以在指定的时间后执行代码。例如:
setTimeout(function(){
console.log("hello");
}
, 1000);
上述代码表示在1000毫秒后,输出"hello"。
使用setInterval函数,可以让代码在一定时间间隔内周期性地执行。例如:
setInterval(function(){
console.log("world");
}
, 1000);
上述代码表示每1000毫秒输出一次"world"。
需要注意的是,使用setTimeout和setInterval时,返回值是一个计时器ID,可以用于取消计时器。
使用clearTimeout函数可以取消setTimeout函数创建的计时器。例如:
var timer1 = setTimeout(function(){
console.log("hello");
}
, 1000);
clearTimeout(timer1);
上述代码表示在计时器工作前,取消了计时器的工作。
使用clearInterval函数可以取消setInterval函数创建的计时器。例如:
var timer2 = setInterval(function(){
console.log("world");
}
, 1000);
clearInterval(timer2);
上述代码表示在计时器工作前,取消了计时器的工作。
需要注意的是,setTimeout和setInterval函数的工作不受代码执行时间的影响。也就是说,如果在1秒后执行某个代码需要2秒,那么下次该代码执行的时间就会推迟。
这个特性与setTimeout和setInterval的第二个参数有关。如果在执行某个代码需要很长时间,可以让下一次计时器工作在这个代码执行结束之后。
例如:
var start = new Date().getTime();
setTimeout(function(){
var end = new Date().getTime();
console.log("elapsed time: " + (end - start) + "ms");
}
, 1000);
while(new Date().getTime() start + 2000){
}
;
上述代码表示,在setTimeout之前增加了一个while循环,这个循环会添加约2000ms的执行时间。这个执行时间加上1000ms的setTimeout时间,总共将会花费3000ms。但是实际上,最终输出的时间大约为2000ms,也就是在while循环执行结束之后,setTimeout才开始工作。
这是因为JavaScript的单线程执行特性,所有语句的执行必须按照顺序来进行,setTimeout和setInterval函数同样受到这个限制。
通过理解setTimeout和setInterval的原理以及JavaScript的单线程特性,可以更好地理解JavaScript的异步编程。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: JavaScript中的timer
本文地址: https://pptw.com/jishu/549041.html
