Javascript 如何编写nodejs服务,一直运行
我对nodeJs(和JS)还不熟悉,所以你能给我解释一下(或者给我一个链接)如何编写nodeJs的简单服务,它可以永久运行吗 我想编写一个服务,它每秒向外部API发送一个请求,并将结果存储在数据库中 所以,也许NodeJ有一些简单的模块可以反复运行js方法 或者,我只需要在循环时编写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() {
,并在那里执行它?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进程将保持运行