Ich versuche, Daten mit curl auf Nodejs zu erhalten. Ich muss mehr als einen child_process für jede Abfrage ausführen, um die Daten ohne Verzögerungen zu erhalten.Mehrere child_process exec auf Knoten js
router.post('/curl/', function*() {
var urls = this.request.body.url;
var exec = require('child_process').exec;
var promise = new Promise((resolve, reject) => {
var count = urls.length;
var res = _.map(urls, (stream) => {
// stream = {url:'http://url1.com'};
var command = 'curl '+stream.url+';
exec(command, (error, stdout, stderr) => {
if (error !== null) {
console.log('exec error: ' + error);
}
return stdout;
});
});
resolve(res);
});
this.body = yield promise;
});
Diese Auflösung '[null, null]'; Ich wurde versucht, Promise.map zu verwenden, aber es war auch fehlgeschlagen.
Wenn ich eine einzige Anfrage (ohne _.map()) - gibt es HTML der angeforderten Seite, wie ich es erwarte. Wie führe ich mehr als einen child_prozess für meine Anfragen aus?
Ich benutze Generator, um den ganzen Code in Versprechen zu verpacken, und es als 'this.body = Renditeversprechen' auszuführen. – Mike
Ok. Funktioniert meine Antwort für dich? – Sangharsh