递归函数 vs setInterval vs setTimeout javascript

新手上路,请多包涵

我正在使用 NodeJs 并且需要调用一个无限函数,但我不知道什么是最佳性能的最佳方法。

递归函数

function test(){
//my code
test();
}

设置间隔

setInterval(function(){
//my code
},60);

设置超时

function test(){
//my code
setTimeout(test,60);
}

我想要在不崩溃服务器的情况下获得最佳性能。我的代码有几个算术运算。

感谢任何优化 javascript 性能的建议。

原文由 J261 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 278
1 个回答

小心……您的第一个代码会阻止 JavaScript 事件循环。

基本上在 JS 中类似于应该处理的函数列表。当您调用 setTimeoutsetIntervalprocess.nextTick 时,您将向此列表添加给定函数,当合适的时间到来时,它将被处理..

第一种情况下的代码永远不会停止,因此它永远不会让事件列表中的其他函数得到处理。

第二和第三种情况很好.. 有一点不同。

例如,如果您的函数需要处理 10 毫秒,而间隔将是您的 60 毫秒。

  • 具有 setInterval 的函数将按以下时间处理:0-10、60-70、120-130,…(因此调用之间只有 50 毫秒的延迟)
  • 但是对于 setTimeout 它将是:
    • 如果您先调用 func:0-10、70-80、140-150、210-220,…
    • 如果您先调用 setTimeout:60-70、130-140、200-210,…

因此,不同之处在于函数启动之间的延迟,这在某些基于间隔的系统中可能很重要,例如游戏、拍卖、股票市场等。

祝你递归好运:-)

原文由 Jan Jůna 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏