2017-02-10 6 views
0

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?

Antwort

1

Hier ist eine Variante ohne Generator (function*). Es ist unklar, was Sie mit Generator zu tun versuchen.

+0

Ich benutze Generator, um den ganzen Code in Versprechen zu verpacken, und es als 'this.body = Renditeversprechen' auszuführen. – Mike

+0

Ok. Funktioniert meine Antwort für dich? – Sangharsh

Verwandte Themen