2011-12-14 3 views
1

Je vois de nombreuses applications qui utilisent le nœud s'exécute pour toujours.Comment empêcher l'arrêt du programme de noeud?

Par conséquent, j'ai essayé d'utiliser la méthode setInterval, que j'ai supposé qu'elle la laissera fonctionner pour toujours, mais apparemment, elle ne fonctionne pas.

var request = require('request'); 

var queue = function(item) { 
    request({ 
    uri: 'http://www.google.net' 
    }, 
    function(error, response, body) { 
    if (!error && response.statusCode == 200) { 
     console.log(body) // Print the google web page. 
    } 
    }) 
}; 
setInterval(queue("google"),1000); //do this every 1 second. 

Lorsque je cours au-dessus du programme, il s'arrête après une seconde.

Comment puis-je modifier les codes ci-dessus pour continuer à fonctionner si je l'exécute avec un noeud?

Répondre

2

En fait, vous avez un bug dans votre code:

setInterval(queue("google"),1000); //do this every 1 second.

Au lieu de passer une fonction ci-dessus comme premier paramètre, vous passez le résultat de l'exécution d'une fonction.

Donc, soit faire setInterval(queue, 1000) ou procédez comme suit si vous voulez plusieurs params:

setInterval(function() { 
    queue(how_many_params_you_want); 
}, 1000); 
+0

Merci beaucoup – user482594

2

une bien meilleure solution utilise le NPM: forever

+0

Je l'ai utilisé pour toujours, mais il semble y avoir un bug dans les versions récentes ... 'forever list' ne montre pas la liste des processus en cours commencée par' forever start' – user482594

+0

J'ai seulement utilisé quand j'étais hébergé sur mon serveur. Je n'ai pas essayé depuis le passage à Heroku – neebz

1

Vous devez attribuer setInterval à une variable locale.

setInterval(function(){},1000); 

s'arrêtera.

var timer = setInterval(function(){},1000); 

ne sera pas.

Questions connexes