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