如何将参数传递给child_process.exec回调函数

6

在使用child_process.exec(cmd,callback)时,是否有一种方式可以向回调函数传递额外的参数?

根据文档,回调函数仅接收错误、标准输出和标准错误。

我可以最终编写一个Unix脚本,获取额外的参数,运行命令,并将命令和参数的结果输出到标准输出,但也许有更好的方法来解决这个问题。

谢谢


我找到了一种方法来向任何函数(特别是匿名函数)传递额外的参数。我在这里发布了答案:https://dev59.com/SGgu5IYBdhLWcg3wYGC3#28120741 - ThorSummoner
2个回答

6

您可以在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
}

好的,当我尝试像这样使用你的解决方案 http://pastebin.com/mxxji4HS 时,它不起作用。 - 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)
    })
}

谢谢!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接