Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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 一个节点应用程序可以处理多少个setInterval()函数?_Javascript_Node.js_Settimeout_Setinterval - Fatal编程技术网

Javascript 一个节点应用程序可以处理多少个setInterval()函数?

Javascript 一个节点应用程序可以处理多少个setInterval()函数?,javascript,node.js,settimeout,setinterval,Javascript,Node.js,Settimeout,Setinterval,我正在创建一个节点应用程序,对于每个请求,我都会定期调用一个函数 app.js 每当有人请求应用程序时,我每30分钟调用一次ping功能 节点应用程序是否可以处理更多的设置间隔 使用setTimeout而不是setInterval好吗 一个节点应用程序可以处理多少个setInterval函数 nodejs设计用于处理大量计时器,至少数十万个 因此,少量的setInterval计时器是完全可以使用的。但是,在我看来,添加一个新的时间间隔,使其在每次遇到路由时永远运行似乎是一个错误,因为它们将无限期

我正在创建一个节点应用程序,对于每个请求,我都会定期调用一个函数

app.js

每当有人请求应用程序时,我每30分钟调用一次ping功能

节点应用程序是否可以处理更多的设置间隔

使用setTimeout而不是setInterval好吗

一个节点应用程序可以处理多少个setInterval函数

nodejs设计用于处理大量计时器,至少数十万个

因此,少量的setInterval计时器是完全可以使用的。但是,在我看来,添加一个新的时间间隔,使其在每次遇到路由时永远运行似乎是一个错误,因为它们将无限期地累积,直到服务器重新启动

如果您更详细地描述您真正想要解决的问题,我们可以帮助您找到一种合适的方法来编写代码。你现在所拥有的,只是一次又一次地运行一个请求,并没有做任何有结果的事情,每次你的路线再次被击中,它就会重新开始运行整个过程,因此你有多个它的实例一次又一次地运行。那看起来像是个错误的设计

下面是另一个答案,它指向有关如何在nodejs中设计计时器的信息:

使用setTimeout而不是setInterval好吗


这两种方式都不会改变您的可伸缩性。使用重复setTimeout和setInterval有不同的设计原因,但都不会改变您的核心问题。

您可能正在寻找。@GaNeShKuMaRm-这回答了您的问题吗?
var express = require('express');
var request = require('request');
var bodyParser = require('body-parser');

var app = express();

const PORT = process.env.port || 1234

app.listen(PORT, () => { console.log(`Server running at ${PORT} ...`)} );   



var router = express.Router();

function ping(i, appURL) 
{
    request(appURL, function (error, response, body) {
         console.log('i:', i ++ ,'url: ', appURL, 'statusCode:', response && response.statusCode, 'Time: ', new Date()); 
    });
}

router.route('/')
    .post(function(req, res) {
        var appURL = req.body.url;
        var i = 1;
        ping(i, appURL);
        setInterval(function() {
            request(appURL, function (error, response, body) {
                ping(i, appURL);
            });
        }, 1800000);
        res.end('Success');
    });

app.use(bodyParser.json());
app.use('/', router);