0
nodejsでcurlを使用してデータを取得しようとしています。遅れなくデータを取得するために、各クエリに対して複数のchild_processを実行する必要があります。ノードjの複数のchild_process exec
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;
});
解決:[null、null] '; Promise.mapを使用しようとしましたが、失敗しました。
リクエスト(_.map()なし)を1回だけ行うと、リクエストされたページのHTMLが返されます。 リクエストに複数のchild_processを実行するにはどうすればよいですか?
私はジェネレータを使用してすべてのコードをプロミスにラップし、 'this.body = yield promise'として実行します。 – Mike
私の答えはあなたのために働くのですか? – Sangharsh