【发布时间】:2017-11-30 22:47:25
【问题描述】:
在前一个回调结束后恰好一秒重复执行回调(几乎)的标准方法是(所谓的)“递归”语法:
function callback_recurse(){
// do something, if <condtion> break
setTimeout(callback_recurse, 1000);
}
setTimeout(callback_recurse, 1000); // first call
为什么不使用循环语法呢?:
function callback(){
// do something
}
function loopcallbacks(){
while (<condition>)
setTimeout(callback, 1000);
}
毕竟,使用迭代循环语法永远不会用完堆栈空间,就像使用递归语法一样。
(免责声明:我正在回答我自己的问题)
【问题讨论】:
-
我不确定我是否理解为什么第二个示例甚至会被视为一个选项,因为它是一个无限循环。
-
第一个 sn-p 不是递归的。它是伪递归的,我不希望它增加调用堆栈。同样在第二个 sn-p 中,您将同步推送无数回调,以便在将它们插入事件循环后 1000 毫秒执行。
标签: javascript loops events recursion settimeout