2012-04-21 47 views
0

我有一個命令,我需要執行三次。它產生大量的輸出到標準輸出,並且需要大約一分鐘的時間。三個命令完成後,應該執行第四個(不同的)命令。 shell腳本應該是這樣的:nodejs:多次運行長命令

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

我在想在循環中使用child_process.exec()但直到它完成的是緩衝標準輸出(右?)。我需要給用戶立即反饋,以便緩衝stdout超過一秒不是一個好主意。所以我需要使用child_process.spawn(),但異步處理讓我有點瘋狂。我正在考慮把產卵電話放在這樣一個函數中:

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

這會工作,我假設。但是有更好的方法嗎?我在unix上,也許在windows系統上。

回答

0

節點模塊異步功能可以在一段代碼中並行執行所有作業。

退房異步(https://github.com/caolan/async)

還檢查了集羣(http://nodejs.org/docs/latest/api/cluster.html)