0

3 回実行する必要があるコマンドがあります。stdout に大量の出力が生成され、約 1 分かかります。3 つのコマンドが終了したら、4 番目の (別の) コマンドを実行する必要があります。シェル スクリプトは次のようになります。

#!/bin/sh
command arg1 arg2
command arg1 arg2
command arg1 arg2
something_else

ループで使用することを考えてchild_process.exec()いましたが、それは終了するまで stdout をバッファリングします (右?)。ユーザーにすぐにフィードバックを提供する必要があるため、stdout を 1 秒以上バッファリングすることはお勧めできません。だから私は使用する必要がありますchild_process.spawn()が、非同期処理は私を少し狂わせます。spawn 呼び出しを次のような関数に入れることを考えていました。

fucnction myfunc(runs) {
   if (runs >= 1) {
       myproc = spawn(...)
       myproc.on('exit',function() { myfunc(runs - 1) })
   }
}

これはうまくいくと思います。しかし、より良い方法はありますか?私は UNIX システムとおそらく Windows システムを使用しています。

4

1 に答える 1

0

node モジュール async には、1 つのコードですべてのジョブを並行して実行できる機能があります。

非同期をチェックする (https://github.com/caolan/async)

クラスターもチェックしてください (http://nodejs.org/docs/latest/api/cluster.html)

于 2012-04-21T15:04:29.633 に答える