2013-04-12 40 views
5

當我使用 child_process.exec(cmd,callback)時,有沒有辦法將額外參數傳遞給回調函數?如何將參數傳遞給child_process.exec回調

根據文檔,回調函數只接收錯誤,stdout,sterr。

我能最終有一個UNIX腳本誰得到額外的參數,運行命令,並且命令和參數傳遞給標準輸出的輸出結果,但也許有更好的方法來做到這一點

感謝

+0

我發現一種方法可以將其他參數傳遞給任何函數(特別是匿名函數)。我發佈的答案在這裏:http://stackoverflow.com/a/28120741/1695680 – ThorSummoner

回答

5

你可以調用另一個函數exec回調

var exec = require('child_process').exec 
function(data, callback) { 
    var cmd = 'ls' 
    exec(cmd, function (err, stdout, stderr) { 
    // call extraArgs with the "data" param and a callback as well 
    extraArgs(err, stdout, stderr, data, callback) 
    }) 
} 

function extraArgs(err, stdout, stderr, data, callback) { 
    // do something interesting 
} 
+0

好吧,當我嘗試你的解決方案,像http://pastebin.com/mxxji4HS,它不工作 – vianney

+0

我的壞,它的工作原理! thx :) – vianney

+1

好的,請注意,exec命令是異步的,但您的for循環不是,因此您可能會遇到意外的行爲。嘗試使用async.each或async.eachSeries。 https://github.com/caolan/async#each或https://github.com/caolan/async#eachSeries – Noah

1

裏面最後,我有一個函數my_exec:

var exec = require('child_process').exec 
function my_exec(cmd,data,callback) 
{ 
    exec(cmd,function(err,stdout,stderr){ 
     callback(err,stdout,stderr,data) 
    }) 
} 

謝謝!

相關問題