callbackexception

我写了一个简单的NodeJS程序来执行一个shell脚本。 我分出一个孩子,并尝试执行脚本。 我已经在退出时给孩子回电了,如下所示。 但是当我尝试运行程序的时候却抛出了一个exception。 我哪里错了?

var exec = require('child_process').exec; function callXmlAgent(callback) { try { var child = exec('./a.sh'); var response = { stdout: '', stderr: '', errCode: -1 }; child.stdout.on('data', function (data) { response.stdout += data; }); child.stderr.on('data', function (data) { response.stderr += data; }); child.on('close', function (errCode) { if (errCode) { response.errCode = errCode; } }); child.on('exit', callback(response)); process.on('exit', function () { // If by chance the parent exits, the child is killed instantly child.kill(); }); } catch(exception) { console.log(exception); } } function foo(response) { console.log(response) }; callXmlAgent(foo); 

我得到的输出是:

 { stdout: '', stderr: '', errCode: -1 } [TypeError: listener must be a function] 

使用以下代码修改子出口事件:

 child.on('exit', function() { callback(response); }); 

现在它不会再抛出错误了,但请注意,使用asynchronous数据并不能保证执行的顺序,所以您可能会有意想不到的结果。

问题是你不能通过另一个函数中的parameter passing函数。 你必须创build一个匿名函数并发送它里面的参数。