如何使用Bluebird来规范Node的child_process.exec和child_process.execFile函数?
我正在使用Node下的Bluebird promise库.js,这太棒了!但我有一个问题:
如果您查看Node的child_process.exec和child_process.execFile的文档,您可以看到这两个函数都返回ChildProcess对象。
那么,推荐的实现此类功能的方法是什么呢?
请注意,以下工作(我得到一个Promise对象):
var Promise = require('bluebird');
var execAsync = Promise.promisify(require('child_process').exec);
var execFileAsync = Promise.promisify(require('child_process').execFile);
但是,如何才能访问原始 Node 的原始返回值.js函数呢?(在这些情况下,我需要能够访问最初返回的 ChildProcess 对象。
任何建议将不胜感激!
编辑:
下面是一个使用 child_process.exec 函数的返回值的示例代码:
var exec = require('child_process').exec;
var child = exec('node ./commands/server.js');
child.stdout.on('data', function(data) {
console.log('stdout: ' + data);
});
child.stderr.on('data', function(data) {
console.log('stderr: ' + data);
});
child.on('close', function(code) {
console.log('closing code: ' + code);
});
但是,如果我使用exec函数的promisized版本(上面的execAsync),那么返回值将是一个承诺,而不是一个ChildProcess对象。这就是我所说的真正问题。