首页 > 解决方案 > Node.js 会自动取消 setInterval 吗?

问题描述

我使用 setInterval 和后来的 node-schedule 每隔一小时左右创建一个预定的通话,但看起来通话通常会在几天后被取消。

const { scheduleJob } = require('node-schedule');

for (let i = 0; i < 24; ++i)
  scheduleJob(`0 ${i} * * *`, tensorFlowAPIs);

这是节点计划版本。

setInterval(tensorFlowAPIs, 60 * 60 * 1000);

这是 setInterval 版本。

tensorFlowAPIs 本质上只是一个异步请求。

标签: node.jssetinterval

解决方案


Node.js 会自动取消 setInterval 吗?

setInterval()不会在一段时间后自动取消 。

如果您的程序停止然后重新启动,则必须手动重新启动程序setInterval()才能继续运行。

长时间运行程序的问题通常是由于某种资源泄漏(文件句柄、内存泄漏或其他系统资源)导致进程在很长一段时间后无法完成其工作。显然,避免这种情况的最佳方法是拥有一个永远不会泄漏任何重要资源的完美程序,但这是程序员处理缓慢、难以检测到的泄漏的一种方式(特别是如果它们可能在开发人员不在的库代码中)不熟悉或仅在某些难以模拟的错误条件下发生)是每隔一段时间(也许一天一次)重新启动他们的过程。这清除了任何泄漏对象的过程并重新开始。


推荐阅读