递归函数 vs setInterval vs setTimeout javascript

2024-03-17

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

递归函数

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

设置时间间隔

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

设置超时时间

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

我想要最好的性能而不崩溃服务器。我的代码有几个算术运算。

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


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

基本上,在 JS 中,类似于应该处理的函数列表。你打电话时setTimeout, setInterval or process.nextTick您将给定的函数添加到此列表中,当正确的时间到来时,它将被处理。

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

第二个和第三个案例都很好......只是有一点区别。

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

  • 带有 setInterval 的函数将按时间处理:0-10、60-70、120-130,...(因此调用之间只有 50ms 的延迟)
  • But with setTimeout it will be:
    • 如果您先调用 func:0-10、70-80、140-150、210-220,...
    • 如果您先调用 setTimeout:60-70、130-140、200-210,...

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

祝你的递归好运:-)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

递归函数 vs setInterval vs setTimeout javascript 的相关文章

  • Jquery 悬停卡

    我在用着http designwithpc com Plugins Hovercard http designwithpc com Plugins Hovercard 但我不知道如何在悬停卡上声明 var 每个工作描述都有自己的 ID 当悬
  • Firebase,只得到新的孩子[重复]

    这个问题在这里已经有答案了 var firebase new Firebase firebaseRef on child added function snapshot 这将接收所有元素 有没有办法在创建新的 Firebase 引用时不接收
  • 位置特征检测:固定

    我正在尝试找到一个脚本来检测设备是否放置position fixed元素相对于视口而不是整个文档 目前 标准桌面浏览器和 Mobile Safari 适用于 iOS 5 都是这样做的 而 Android 设备则相对于整个文档放置固定元素 我
  • 在版本 4.4.6 中禁用 ckeditor 上下文菜单

    我在 Rails4 项目中使用 ckeditor 我尝试了 ckeditor gem 和 ckeditor rails gem 来提供 ckeditor 库 这里有多个帖子 人们希望删除 ckeditor 上下文菜单 以便可以显示本机浏览器
  • 如何使用 Playwright 使用选择器查找框架 (iframe)

    我有一个小问题 无法找到使用 Microsoft Playwright 框架的答案 根据您可以使用以下代码获取 iframe const frame page frame frame login 但是如何使用选择器来查找 iframe 并与
  • 我应该对算法使用递归还是记忆化?

    如果我可以选择使用递归或记忆来解决问题 我应该使用哪一个 换句话说 如果它们都是可行的解决方案 因为它们提供了正确的输出并且可以在我正在使用的代码中合理地表达 那么我什么时候会使用其中一个而不是另一个 它们并不相互排斥 您可以同时使用它们
  • 如何在网站上使用 svg 元素制作块的屏幕截图?

    我在网站上创建了一个构造函数 其本质是将所选元素及其颜色 svg中的元素 添加到访问者选择的背景和背景颜色 png中的背景 中 然后必须单击 保存 结果 按钮并仅执行工作区的屏幕截图 我写了这个脚本 但它需要屏幕截图 但只有背景 并忽略选定
  • 本地推送通知到在应用程序内运行 JS 代码的 Win8 Live Tile

    我正在尝试将更新发送到我的应用程序的磁贴 当应用程序运行时 这可以正常工作 例如 当用户单击按钮时 我可以轻松地将磁贴更新通知发送到磁贴 我无法解决的是当应用程序无法运行时如何更新磁贴 我找到的唯一选择是使用以下命令从远程 Web 服务器拉
  • IntersectionObserver是否支持水平滚动观察?

    我制作了几个垂直滚动 IntersectionObserver 模块 但我对水平滚动感兴趣 根将是 div 观察目标将是 img 我想观察当 img 放大但 div 保持视口宽度时的变化 我什至不确定移动 Safari 是否会将缩放后的图片
  • 递归中的收益回报

    我正在尝试创建一个 IEnumrable
  • ReactTransitionGroup 不适用于 React-redux 连接组件

    我正在开发一个更大的项目 但我创建了这个简短的示例来说明问题 如果我使用Box组件 它的工作原理 它在控制台中输出componentWillEnter and componentWillLeave当我们点击按钮时 如果我使用BoxConta
  • 如何在另一个自定义 Hook 中使用返回值的自定义 Hook?

    我正在使用 React native 其中有一个名为的自定义 HookuseUser使用以下方法从 AWS Amplify 获取用户信息Auth getUserInfro方法 然后获取返回对象的一部分并用它设置一个状态变量 我还有另一个名为
  • 如何始终将焦点保持在文本框中

    我创建了一个包含两个 div 的 HTML 页面 左侧的 div 页面的 90 是 ajax 结果的目标 右侧的 div 页面的 10 包含一个文本框 该页面的想法是在文本框中输入零件编号 通过条形码扫描仪 并显示与该零件编号匹配的绘图 显
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 如何使用 JavaScript 或 jQuery 克隆 HTML 元素的样式对象?

    我正在尝试克隆元素的样式对象 这应该允许我在更改后重置所述元素的样式 例如 el style left 50px curr style left 50px Modify the elements style The cloned style
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • 使用 next.js 进行服务器端渲染与传统 SSR

    我非常习惯 SSR 意味着页面得到完全刷新并从服务器接收完整 HTML 的方法 其中根据后端堆栈使用 razor pub other 进行渲染 因此 每次用户单击导航链接时 它只会向服务器发送请求 整个页面将刷新 接收新的 HTML 这就是
  • 如何从 json 文件创建模型? (ExtJS)

    这是我想使用 json 文件创建的模型 Ext define Users extend Ext data Model fields name user id type int name user name type string 为了根据服
  • 将数组从 jquery ajax 传递到代码后面

    我必须将二维数组传递给在asp net网页代码后面编写的页面方法我有一个变量objList作为二维数组 我使用以下代码来实现此目的 但没有成功 并且未调用页面方法 脚本语言 function BindTable objList ajax u
  • 使用velocity.js制作可拖动元素的动画

    我正在使用velocity js 为用户拖动的可拖动 SVG 元素设置动画 然而 velocity js 将先前的 mousemove 坐标排队并通过所有后续的 mousemove 坐标进行动画处理 我想要的是velocity js 不要对

随机推荐

  • 重新调整一个因素

    给定一个无序因子 ID 每个级别的排名的参考向量以及每个级别的标签 现在我想按给定的排名对 ID 进行排序 然后我想覆盖因子中的标签 如果有更好的方法 您能否提供建议 ID lt factor c 1 2 2 3 1 3 3 2 1 1 1
  • gitignore 按文件大小?

    我正在尝试实现 Git 来管理创意资产 Photoshop Illustrator Maya 等 并且我想根据文件大小而不是扩展名 位置等从 Git 中排除文件 例如 我不想排除所有 avi 文件 但随机目录中有一些我不想提交的大量 1GB
  • 将搜索栏添加到 WordPress 的导航菜单中

    http www lundarienpress com http www lundarienpress com 这是一个 WordPress 网站 这是我的网站 我正在尝试将搜索栏添加到导航菜单并将其放在右侧 有任何想法吗 我还没有找到办法
  • 如何使用 Xcode 4.3.2 打开 objectVersion 38 的 Xcode 项目

    我有一个 Xcode 项目MyProject pbproj其中一个项目文件project pbxproj拥有财产objectVersion 38 当我尝试使用 Xcode 打开它时 我收到消息 无法加载 处的项目 项目版本不兼容 我的Xco
  • 如何将操作链接包含到按钮的标签中?

    我的目标是在标签中包含一个操作链接 显示帮助文本 selectInput button library shiny ui lt fluidPage br selectInput inputId some id label Please ch
  • 自更新到 Swift 1.2 以来,字典现在给出错误“无法转换为 BooleanLiteralConvertible”

    我刚刚开始了解 Swift 然后出现了 Swift 1 2 破坏了我的工作代码 我有一个基于代码示例的函数NSHipster CGImageSourceCreateThumbnailAtIndex http nshipster com im
  • 使用 XSLT 更改 XML 文件中的一个标签名称

    我是否可以在 XSLT 中设置条件 以便仅查找并替换特定标记名称的第一个标记 例如 我有一个 XML 文件 其中包含许多内容
  • 使用 php artisanserve 无法加载公共文件夹中的任何 js / css?

    我有xampp控制面板v3 2 2 php版本5 6 24 我的laravel版本是5 4 32 在 Windows 7 32 位中 我正在使用 Laravel 创建项目composer create project laravel lar
  • 是否使用JTA事务?

    我正在开发一个部署在 JBoss 应用程序服务器上的 J2EE 应用程序 该应用程序由 EJB 2 x 组件和 Web 组件组成 运行在本地计算机或远程服务器上 数据库是 Oracle 或 SQL Server 并且不处于分布式环境中 我使
  • 通过 Istio 入口网关的 TLS 握手失败 (tlsMode=passthrough)

    从外部客户端到 Kubernetes 集群内服务器的 TLS 握手失败 这是关于理解原因 我已将 Istio 入口网关配置为通过端口 15433 上收到的 TLS 并将其路由到端口 433 上的服务器 入口网关日志显示客户端尝试 TLS 握
  • 在 VSTS 中执行运行功能测试任务时出错

    在 VSTS 2015 中 我们在使用 NUnit 测试框架的项目中构建和发布管道设置 我们正在尝试使用 运行功能任务 配置集成测试用例执行 任务配置如下面的屏幕截图所示 可视化测试代理部署任务用于在目标计算机中部署 NUnit 测试代理
  • 每 5 秒使用 jquery/javascript 读取 XML

    我有一个html 索引 html Tasks span 0 span Messages span 0 span Notifications span 0 span
  • Spring Rest 客户端异常处理

    我正在使用弹簧RestTemplate消耗休息服务 在春季休息中暴露 我能够消费成功场景 但对于负面情况 服务会返回错误消息和错误代码 我需要在我的网页中显示这些错误消息 例如对于无效请求 服务抛出异常HttpStatus BAD REQU
  • 如何根据 X509Certificate2Collection 链验证 X509Certificate2

    我正在编写一个 SAML 2 0 响应解析器来处理 ASP Net 中的 POST 身份验证 在 C 和 MVC 中 但这不太相关 所以我有一个 p7b要验证的文件并且可以读入X509Certificate2Collection以及示例断言
  • 像any.do一样弹出窗口

    我正在编写一个应用程序 在弹出窗口中显示未接来电和未读短信 它还具有提醒功能 关闭弹出窗口并在指定时间后打开它 它类似于any do的弹出窗口 我能够使用 WindowManger 创建这样一个窗口 但由于某些我到目前为止不明白的原因 弹出
  • 如何在 ClickOnce 安装中仅更新一个 DLL?

    我正在开发一个大型单击一次应用程序 150MB gt 200 个 DLL 作为交互式调试过程的一部分 我想仅更新 1 个 DLL 并重新启动应用程序 而无需重建和重新部署整个应用程序 那可能吗 如果是这样 怎么办 问题澄清 2009年9月2
  • ImageButton标题标签

    在 ImageButton 上使用 AlternateText 属性向浏览器呈现 alt 标签
  • SQL Server 触发器隔离/范围文档

    我一直在寻找确定的有关 SQL Server 中触发器的隔离级别 或并发性或范围 我不确定确切的称呼它 的文档 我发现以下来源表明我认为是正确的 也就是说 两个用户对同一个表 甚至是相同的行 执行更新 然后将执行独立且隔离的触发器 http
  • Thymeleaf 中 th:each 语句中的 If-Else

    我想要的是 Thymeleaf 中 th each 语句中的 if else If currentSkill null 然后显示包含内容的表格 否则 您没有任何技能 这是没有 if else 的代码 div table tr td td t
  • 递归函数 vs setInterval vs setTimeout javascript

    我正在使用 NodeJs 并需要调用无限函数 但我不知道什么是最佳性能 递归函数 function test my code test 设置时间间隔 setInterval function my code 60 设置超时时间 functi