我看到了关于setInterval()
函数正确用法的答案。有人说
(function(){
// do some stuff
setTimeout(arguments.callee, 60000);
})();
保证在上一次结束之前不会进行下一次来自setTimeout的调用。为什么使用自调用功能会使这种情况发生?
答案 0 :(得分:5)
使用立即调用的函数表达式并不能实现它,它使用setTimeout()
而不是setInterval()
来完成它。 setInterval()
的机制在第一次迭代完成之前不会真正启动下一次迭代,除非处理程序执行类似于开始异步操作的操作。但是,通过使用setTimeout
代替,可以更好地控制迭代之间的延迟。
也不应该这样写。代替:
(function f() {
// code
setTimeout(f, 60000);
})();
如果不是绝对必要的话,使用arguments.callee
是一个坏主意。