Wie kann man die Funktionen child_process.exec und child_process.execFile von Node mit Bluebird promiziieren?

Ich bin mit dem Bluebird Versprechen-Bibliothek unter Node.js, es ist toll! Aber ich habe eine Frage:

Wenn Sie einen Blick auf die Dokumentation des Knotens child_process.exec und child_process.execFile können Sie sehen, dass diese beiden Funktionen sind der Rückgabe einen ChildProcess Objekt.

Also, was ist der empfohlene Weg, um promisify solche Funktionen?

Beachten Sie, dass das folgende funktioniert (ich bekomme ein Promise-Objekt):

var Promise = require('bluebird');
var execAsync = Promise.promisify(require('child_process').exec);
var execFileAsync = Promise.promisify(require('child_process').execFile);

Aber wie kann man den Zugriff auf die ursprüngliche return-Wert der ursprünglichen Node.js Funktionen? (In diesen Fällen würde ich brauchen, um in der Lage sein, um Zugriff auf die ursprünglich zurückgegeben ChildProcess Objekte).

Jeder Vorschlag würde geschätzt!

EDIT:

Hier ist ein Beispiel code, der mit der return-Wert der child_process.exec-Funktion:

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);
});

Aber wenn würde ich die promisified version der exec-Funktion ( execAsync von oben ), dann ist der Rückgabewert ein Versprechen, nicht eine ChildProcess Objekt. Das ist das eigentliche problem von dem ich Rede.

InformationsquelleAutor der Frage Zoltan | 2015-06-10

Schreibe einen Kommentar