2013-04-12 27 views
5

có cách nào để chuyển đối số thừa vào hàm gọi lại khi tôi sử dụng child_process.exec(cmd,callback)?Làm cách nào tôi có thể chuyển đối số tới child_process.exec gọi lại

Theo tài liệu, chức năng gọi lại chỉ nhận được lỗi, stdout, sterr.

tôi cuối cùng đã có thể có một kịch bản unix những người được args thêm, chạy lệnh, và đầu ra kết quả của lệnh và args để stdout nhưng có lẽ đó là một cách tốt hơn để làm điều này

Cảm ơn

+0

Tôi đã tìm thấy cách chuyển các tham số bổ sung cho bất kỳ hàm nào (cụ thể là một hàm ẩn danh). Tôi đăng rằng câu trả lời ở đây: http://stackoverflow.com/a/28120741/1695680 – ThorSummoner

Trả lời

5

Bạn có thể gọi chức năng khác bên trong 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

tốt, khi tôi thử giải pháp của bạn như thế http://pastebin.com/mxxji4HS, nó không hoạt động – vianney

+0

xấu của tôi, nó hoạt động ! thx :) – vianney

+1

ok, lưu ý rằng lệnh exec là không đồng bộ nhưng vòng lặp for của bạn là không, do đó bạn có thể chạy vào hành vi bất ngờ. Hãy thử sử dụng async.each hoặc async.eachSeries thay thế. https://github.com/caolan/async#each hoặc https://github.com/caolan/async#eachSeries – Noah

1

cuối cùng, tôi có một chức năng 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) 
    }) 
} 

cảm ơn bạn!

Các vấn đề liên quan