最佳答案
我正在使用 Node.js 下的 Bluebird 承诺库,它非常棒! 但是我有一个问题:
如果查看 Node 的 Child _ process. exec和 Child _ process. ExecFile的文档,可以看到这两个函数都返回一个 ChildProcess 对象。
那么,建议用什么方法来承诺这些函数呢?
注意下面的工作(我得到了一个噪音对象) :
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 函数的承诺版本(上面提到的 ExecAsync) ,那么返回值将是一个承诺值,而不是一个 ChildProcess 对象。这才是我说的真正的问题。