Я использую библиотеку обещаний Bluebird под Node.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.)
Любое предложение будет оценено!
EDIT:
Вот пример кода, который использует возвращаемое значение функции 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. Это настоящая проблема, о которой я говорю.