8

タスク A と他の n 個のタスクがあるとします。タスク A を他の n 個のタスクと並行して実行したい。タスク A は、5 秒ごとにキューからデータを取得しています。

Node JS は初めてです。このタスク/ジョブ A をバックグラウンドで実行する方法はありますか、または解決策はありますか??

4

3 に答える 3

11

タスクが何であるかに大きく依存します。あなたの質問を理解できれば、これを行うには 2 つの方法があります。1 つはタイマーを使用して関数を実行する方法、2 つは子プロセスを生成する方法です。

1

function taskA(){...}

setInterval(taskA,5000);

2

//same code as 1, but in a child process
var spawn = require('child_process').spawn,
ls    = spawn('taskA.js');
//taskA.js has the code from example 1

ノードはシングルスレッドであるため、メインプロセスで他の多くのことを行っている場合は、2 対 1 を好むかもしれません。特定の状況では、これを行うためのより良い方法がある可能性が高いことにも注意してください。たとえば、クラウドベースの Web アプリでは、PAAS のサービスに依存してバックグラウンド タスクを実行することがあります。https://github.com/nodejitsu/forever-monitorも調べてみてください。

ウェブアプリでバックグラウンド ジョブを処理する方法については、こちらの記事をご覧ください。https://devcenter.heroku.com/articles/background-jobs-queueingただし、ノード固有ではありません。また、Heroku プラットフォームに固有です。

于 2013-10-13T19:16:42.437 に答える
1

標準的なsetTimeout()方法を使用できます。

function task() {
  console.log("Timer");
  setTimeout(task, 5000);
}

task();
于 2013-10-13T19:14:46.050 に答える