ошибки при помещении функции внутри setInterval () - PullRequest
0 голосов
/ 12 октября 2018

Я написал этот код в nodeJs:

function ricarica() {

   request.get(url, function (error, response, body) {
       if (!error && response.statusCode == 200) {
           var json = JSON.parse(body);
           //console.log(json[11].nome_abbr);
           //console.log(json[11].valore); 

            app.use(function(req, res, next) {
                res.header("Access-Control-Allow-Origin", "*");
                res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
                next();
            });

            app.get('/valore', function(req, res){
            res.json({ livello: json[11].valore }); 
            });     
        }
   });
}

Я хочу запускать эту функцию каждые 10 минут, я смотрю на setInterval, но когда я заменяю это:

ricarica();

с этим:

 setInterval(function() {
     ricarica();
 }, 600000);

Когда я запрашиваю данные с моего веб-сайта, с первым я могу видеть данные, но они не обновляются, со вторым у меня появляется сообщение «Cannot GET / valore»;

Как я могу получать данные и обновлять их каждые 10 минут?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Я решил в этом режиме:

async function ricarica() {
while(true){
    await sleep(120000);
    request.get(url, function (error, response, body) {
        if (!error && response.statusCode == 200) {
            var json = JSON.parse(body);
            var i;
            for(i = 0; i< json.length && json[i].nome_abbr != "PS_Giud" ; i++);
            console.log(json[i].nome_abbr);
            //console.log(json[i].valore); 

            app.use(function(req, res, next) {
                res.header("Access-Control-Allow-Origin", "*");
                res.header("Access-Control-Allow-Headers", "Accept, Content-Type, If-None-Match, X-If-None-Match");
                res.header("Access-Control-Expose-Headers", "Location, Warning, Etag");
                res.header("Access-Control-Allow-Headers", "Content-Type, If-None-Match, X-If-None-Match, Authorization");
                res.header("Access-Control-Allow-Methods", "POST, GET, DELETE, OPTIONS");

                next();
            });

            app.get('/valore', function(req, res, next){
              res.json({ livello: json[i].valore }); 
            });     
        }
    });
}

}

, и мне нужно вызвать его только один раз

0 голосов
/ 12 октября 2018

Попробуйте это:

function updateData() {
   ricarica();
}

function ricarica() {

   request.get(url, function (error, response, body) {
       if (!error && response.statusCode == 200) {
           var json = JSON.parse(body);
           //console.log(json[11].nome_abbr);
           //console.log(json[11].valore); 

            app.use(function(req, res, next) {
                res.header("Access-Control-Allow-Origin", "*");
                res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
                next();
            });

            app.get('/valore', function(req, res){
            res.json({ livello: json[11].valore }); 
            });     
        }
   });
}

setInterval ( updateData, 600000 );
...