javascript - 如何编写nodejs服务,一直运行

标签 javascript node.js service

我是 nodeJs(和 JS)的新手,所以你能解释一下(或给一个链接)如何编写永久运行的 nodeJs 的简单服务吗?

我想编写服务,它每秒向外部 API 发送一个请求,将结果存储在数据库中。

那么,也许 nodeJs 有一些简单的模块可以一遍又一遍地运行 js 方法?

或者,我只需要编写 while 循环并在那里执行?

最佳答案

setInterval() 是您用来在 node.js 中每秒运行一些东西的方法。这将在您传递 NN 的值时每 NN 毫秒调用一次回调。

var interval = setInterval(function() {
    // execute your request here
}, 1000);

如果你想让它永远运行,你还需要处理你正在联系的远程服务器离线或有问题并且没有像往常一样响应的情况(例如,它可能需要超过第二个是超时或失败的麻烦请求)。重复使用 setTimeout() 在处理完成后 1 秒安排下一个请求可能更安全。

function runRequest() {
    issueRequest(..., function(err, data) {
        // process request results here

        // schedule next request
        setTimeout(runRequest, 1000);
    })
}

// start the repeated requests
runRequest();

在此代码块中,issueRequest() 只是您正在执行的任何网络操作的占位符(我个人可能会使用 request() 模块并使用 request.get().

因为您的请求处理是异步的,所以这实际上不是递归,也不会导致堆栈堆积。


仅供引用,具有事件传入服务器或事件计时器或进程内网络操作的 node.js 进程不会退出(它将继续运行),只要您始终有一个计时器在运行或网络请求在运行,您的 node.js 进程将继续运行。

关于javascript - 如何编写nodejs服务,一直运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34979124/

相关文章:

swift - 在 Finder 上下文中建立服务

javascript - 单击后在文本框中保留初始值

javascript - Swiper.js 分页自定义项目符号不会点击移动到下一张幻灯片

Javascript 日期对象基于什么

javascript - 覆盖 browserify require()

javascript - 如何将 Stripe Connect 与 Node.js 集成?

android - Android WifiManager 如何连接到 wpa_supplicant?

iOS - 多通知扩展服务?

javascript - 使用 ng-repeat 根据不同对象的 id 绑定(bind)一组对象的值

node.js - NodeJS 异步回调未完成和渲染 Handlebars 模板