Ich benutze die Bluebird-Versprechensbibliothek unter Node.js, es ist großartig! Aber ich habe eine Frage:
Wenn Sie sich die Dokumentation von child_process.exec und child_process.execFile von Node ansehen , können Sie feststellen, dass beide Funktionen ein ChildProcess-Objekt zurückgeben.
Was ist der empfohlene Weg, um solche Funktionen zu versprechen?
Beachten Sie, dass Folgendes funktioniert (ich erhalte 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 auf den ursprünglichen Rückgabewert der ursprünglichen Node.js-Funktionen zugreifen? (In diesen Fällen müsste ich auf die ursprünglich zurückgegebenen ChildProcess-Objekte zugreifen können.)
Jeder Vorschlag wäre dankbar!
BEARBEITEN:
Hier ist ein Beispielcode, der den Rückgabewert der Funktion child_process.exec verwendet:
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);
});
Wenn ich jedoch die versprochene Version der exec-Funktion (execAsync von oben) verwenden würde, wäre der Rückgabewert ein Versprechen, kein ChildProcess-Objekt. Dies ist das eigentliche Problem, über das ich spreche.
ChildProcess
Instanz? Ein Codebeispiel, wie Sie die gewünschte Funktion verwenden möchten, wäre hilfreich.