2013-04-12 19 views
5

czy istnieje sposób przekazania dodatkowych argumentów do funkcji wywołania zwrotnego, gdy używam child_process.exec(cmd,callback)?Jak przekazać argument do wywołania zwrotnego child_process.exec

Zgodnie z dokumentacją funkcja zwrotna otrzymuje tylko błąd, stdout, sterr.

mogłem w końcu mieć skrypt unix kto dostaje dodatkowe argumenty, uruchamia polecenie, a wyjścia wynik polecenia i args do stdout, ale być może istnieje lepszy sposób to zrobić

Dzięki

+0

Znalazłem sposób przekazywania dodatkowych parametrów do dowolnej funkcji (szczególnie anonimowej). Wysłałem tę odpowiedź tutaj: http://stackoverflow.com/a/28120741/1695680 – ThorSummoner

Odpowiedz

5

Ty może wywołać inną funkcję wewnątrz exec zwrotnego

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

cóż, kiedy próbuję twoje rozwiązanie takie jak to http://pastebin.com/mxxji4HS, to nie działa – vianney

+0

moje złe, to działa ! thx :) – vianney

+1

ok, zwróć uwagę, że polecenie exec jest asynchroniczne, ale twoja pętla for nie jest, dlatego możesz uruchomić nieoczekiwane zachowanie. Spróbuj zamiast tego użyć async.each lub async.eachSeries. https://github.com/caolan/async#each lub https://github.com/caolan/async#eachSeries – Noah

1

na koniec mam my_exec funkcję:

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

dziękuję!

Powiązane problemy