Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何编写nodejs服务,一直运行_Javascript_Node.js_Service - Fatal编程技术网

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

Javascript 如何编写nodejs服务,一直运行,javascript,node.js,service,Javascript,Node.js,Service,我对nodeJs(和JS)还不熟悉,所以你能给我解释一下(或者给我一个链接)如何编写nodeJs的简单服务,它可以永久运行吗 我想编写一个服务,它每秒向外部API发送一个请求,并将结果存储在数据库中 所以,也许NodeJ有一些简单的模块可以反复运行js方法 或者,我只需要在循环时编写,并在那里执行它?setInterval()是您在node.js中每秒运行某个程序的工具。这将每隔NN毫秒调用一次回调,其中传递NN的值 var interval = setInterval(function() {

我对nodeJs(和JS)还不熟悉,所以你能给我解释一下(或者给我一个链接)如何编写nodeJs的简单服务,它可以永久运行吗

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

所以,也许NodeJ有一些简单的模块可以反复运行js方法

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

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进程将继续运行。

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进程将保持运行