节点 js 上的多个 child_process exec
Multiple child_process exec on node js
我正在尝试在 nodejs 上使用 curl 获取数据。我需要为每个查询 运行 多个 child_process 以便立即检索数据。
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())- 它 returns HTML 所请求的页面,如我所料。
如何 运行 多个 child_process 满足我的要求?
这是一个没有生成器的变体 (function*
)。
目前还不清楚你想用发电机做什么。
var exec = require('child_process').exec;
router.post('/curl/', function() {
function processUrl(url) {
return new Promise((resolve, reject) => {
var command = 'curl ' + stream.url;
exec(command, (error, stdout, stderr) => {
if (error)
return reject(error);
return resolve(stdout);
});
});
}
var urls = this.request.body.url;
var allPromises = urls.map(url => {
return processUrl(url);
});
Promise.all(allPromises)
.then(htmls => {
console.log('HTML of pages:', htmls.length);
});
});
我正在尝试在 nodejs 上使用 curl 获取数据。我需要为每个查询 运行 多个 child_process 以便立即检索数据。
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())- 它 returns HTML 所请求的页面,如我所料。 如何 运行 多个 child_process 满足我的要求?
这是一个没有生成器的变体 (function*
)。
目前还不清楚你想用发电机做什么。
var exec = require('child_process').exec;
router.post('/curl/', function() {
function processUrl(url) {
return new Promise((resolve, reject) => {
var command = 'curl ' + stream.url;
exec(command, (error, stdout, stderr) => {
if (error)
return reject(error);
return resolve(stdout);
});
});
}
var urls = this.request.body.url;
var allPromises = urls.map(url => {
return processUrl(url);
});
Promise.all(allPromises)
.then(htmls => {
console.log('HTML of pages:', htmls.length);
});
});