为什么将setInterval与自调用函数一起使用是一种更好的方法?

时间:2015-10-14 18:31:52

标签: javascript

我看到了关于setInterval()函数正确用法的答案。有人说

(function(){
   // do some stuff
   setTimeout(arguments.callee, 60000);
})();

保证在上一次结束之前不会进行下一次来自setTimeout的调用。为什么使用自调用功能会使这种情况发生?

1 个答案:

答案 0 :(得分:5)

使用立即调用的函数表达式并不能实现它,它使用setTimeout()而不是setInterval()来完成它。 setInterval()的机制在第一次迭代完成之前不会真正启动下一次迭代,除非处理程序执行类似于开始异步操作的操作。但是,通过使用setTimeout代替,可以更好地控制迭代之间的延迟。

也不应该这样写。代替:

(function f() {
  // code
  setTimeout(f, 60000);
})();

如果不是绝对必要的话,使用arguments.callee是一个坏主意。