Wie haben meine NodeJS-app läuft in einer Schleife für immer

Geschrieben haben ich eine NodeJS-app, die ruft eine API und Beiträge zu einem Endpunkt nur an Wochentagen zu einer bestimmten Uhrzeit.

Könnte ich setup ein cron-job, um die app ausführen an der angegebenen Zeit, aber ich würde es vorziehen, es mit node index.js haben und es ständig ausgeführt wird, nichts zu tun, bis es der richtige Tag und die Uhrzeit und dann zurück zu "schlafen", bis den folgenden Tag.

Wie kann ich das erreichen? Ich habe versucht, mit einer while-Schleife:

while (true) {
  myApp.run();
}

Offensichtlich, dass nicht allzu gut zu gehen.

Was ist der richtige Weg, es zu tun? Sollte ich umschreiben, meine Module zu verwenden, Ereignisse, so dass ich emittieren, wenn es Zeit und es gibt einen listener, der reagiert darauf?

--edit: um genauer Zu sein, ich möchte es in ähnlicher Weise, um eine app, die hat einen webserver drin. Wenn Sie starten Sie die app, es läuft und wartet auf verbindungen, die nicht auf beenden, wenn die Anfrage & Verbindungs-Ende, es bleibt ausgeführt, warten auf weitere Anfragen & verbindungen.

--edit 2: Der Grund, warum ich lieber nicht verwenden Sie einen cron ist, weil die Tage und die Zeit zu laufen, sind konfigurierbar in eine config.json - Datei, die die app analysiert. Ich würde eher zu vermeiden, messing mit cron und einfach nur den Zeitplan ändern durch Bearbeiten der config.json Datei.

--edit 3: ich möchte code diese selbst und nicht ein Modul verwenden. Mein Gehirn tut immer weh, wenn Sie versuchen zu schreiben eine app, die ausgeführt würde, für immer und ich würde gerne verstehen, wie es gemacht wird, anstatt mit einem Modul.

--edit 4: Hier ist was ich landete mit:

function doStuff() {
  //code to run
};

function run() {
  setInterval(doStuff, 30000);
};

run();
  • Nicht viel von einem Knoten person, aber ich glaube, es ist eine Art Zeitschaltuhr, die Sie einrichten können. Ich würde einen von denen benutzen.
  • Ich feeel wie cron oder irgendeine Art von job scheduler wie resque wäre besser. Sie können immer mit setInterval
  • Sie könnte den aktuellen Tag und die Uhrzeit, und dann berechnen, wie viel Zeit bis zum nächsten mal, wenn Sie wollen rufen Sie Ihre API. Verwenden Sie dann das Zeitintervall in einem Aufruf setTimeout() oder setInterval() (wie erwähnt von Nick Tomlin oben)
InformationsquelleAutor springloaded | 2016-04-28
Schreibe einen Kommentar