setTimeout代替setInterval的方法

javaScript是单线程运行的,浏览器无论在什么时候只且只有一个线程在运行javascript程序。
setTimeout和setInterval的方法要注意的问题:
setTimeout和setInterval设置的时间参数具体的意思是:在参数指定的时间后将待执行的方法放到执行的队列中,如果队列中没有其他方法的等待,则立即执行setTimeout/setInterval指定的方法,因此给人立即执行的假象。
之所以要用setTimeout的方法来替代setInterval,是因为setInterval会产生回调堆积,特别是在时间很短的时候,就会有清除不掉setInterval方法的现象。
此处用setTimeout的延时递归来代替setInterval。

代码如下:

1
2
3
4
5
6
7
8
var timeout = false;//启动及关闭按钮
function timer()
{
if(timeout)return;
method();//要执行的方法
setTimeout(timer, 2000);
//timer指本身,延时递归调用自己,2000是隔多久调用自己一次,单位ms
}