2013-04-12 18 views
5

esiste un modo per passare argomenti aggiuntivi alla funzione di callback quando utilizzo child_process.exec(cmd,callback)?Come posso passare argomenti alla callback child_process.exec

In base alla documentazione, la funzione di callback riceve solo errori, stdout, sterr.

ho potuto finalmente avere uno script UNIX che ottiene args in più, corre il comando, e le uscite risultato del comando e args a stdout, ma forse c'è un modo migliore per fare questo

Grazie

+0

Ho trovato un modo per passare parametri aggiuntivi a qualsiasi funzione (in particolare anonima). Ho postato la risposta qui: http://stackoverflow.com/a/28120741/1695680 – ThorSummoner

risposta

5

È può chiamare un'altra funzione all'interno del exec callback

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

beh, quando provo la tua soluzione come quella http://pastebin.com/mxxji4HS, non funziona – vianney

+0

mio male, funziona ! thx :) – vianney

+1

ok, si noti che il comando exec è asincrono ma il ciclo for non lo è, pertanto è possibile che si verifichino comportamenti imprevisti. Prova invece a usare async.each o async.eachSeries. https://github.com/caolan/async#each o https://github.com/caolan/async#eachSeries – Noah

1

alla fine, ho un funzione 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) 
    }) 
} 

grazie!

Problemi correlati