setTimeout或setInterval有什么区别?
今天看到有网友提问,问setTimeout或setInterval有什么区别?
因为据他所知,这两种方法都是达到同一种效果。
实例1:
function myTimeoutFunction()
{
doStuff();
setTimeout(myTimeoutFunction, 1000);
}
myTimeoutFunction();
{
doStuff();
setTimeout(myTimeoutFunction, 1000);
}
myTimeoutFunction();
实例2:
function myTimeoutFunction()
{
doStuff();
}
myTimeoutFunction();
setInterval(myTimeoutFunction, 1000);
{
doStuff();
}
myTimeoutFunction();
setInterval(myTimeoutFunction, 1000);
其实setTimeout或setInterval在本质上他们都是试图做相同的事情,只不过setInterval方法比setTimeout方法更为准确些。
因为setTimeout等1000ms运行函数,然后设置另一个超时。
所以等待时间实际上是1000ms以上。
不过也有人可能会觉得setInterval执行效果是一样的,其实这一点也很重要,setInterval的确也会推迟。
因为javascript并不是多线程语言,如果有脚本运行其他部份,那么期间也需要等待那个完成。
其实这样的延迟基本上是可以忽略不计的。
setTimeout不会重复,它允许在设定的时间后运行脚本,但只能运行一次。
而setInterval将会重复该脚本,直到它遇到clearTimeout时才停止。