据我所知,这两个javascript的行为方式相同:
选项A:
function myTimeoutFunction()
{
doStuff();
setTimeout(myTimeoutFunction, 1000);
}
myTimeoutFunction();
选项B:
function myTimeoutFunction()
{
doStuff();
}
myTimeoutFunction();
setInterval(myTimeoutFunction, 1000);
使用setTimeout和setInterval之间有什么区别吗?
setInterval和setTimeout都返回一个计时器id,您可以使用它来取消执行,即在触发超时之前。要取消,请调用clearInterval或clearTimeout,如下所示:
var timeoutId = setTimeout(someFunction, 1000);
clearTimeout(timeoutId);
var intervalId = setInterval(someFunction, 1000),
clearInterval(intervalId);
此外,当您离开页面或关闭浏览器窗口时,超时会自动取消。
选项A和选项B看起来工作相同的原因主要是因为setInterval和setTimeout函数的位置不同。
function myTimeoutFunction()
{
doStuff();
setTimeout(myTimeoutFunction, 1000);
}
myTimeoutFunction();
这是一个递归函数,如果doStuff非常复杂,则setTimeout必须跟踪setTimout的所有调用以及当前的doStuff,这会使它变得更慢,而且速度更快。
function myTimeoutFunction()
{
doStuff();
}
myTimeoutFunction();
setInterval(myTimeoutFunction, 1000);
另一方面,setInterval只需要跟踪上一个setInterval和当前的doStuff,使其保持恒定的速度。
So which one should you use?
从上面的内容中,您应该能够得出结论,更好的方法是setInterval。