我是bluebird的新手,并尝试使用child_process.execFile
实例化多个Promise.map
,并在完成时读取/合并所有stdout
。现在,为了执行一个execFile
并阅读error
,stdout
和stderr
,我这样做:
child_process.execFile("node", [ script, 1 ], function (error, stdout, stderr) {
...
});
我可以通过这段代码来实现同样的目标
var Promise = require('bluebird');
var execFile = require('child_process').execFile;
execFile = Promise.promisify(execFile);
var print = "print.js";
execFile("node", [ script, 1 ]).then(
function (stdout) {
console.log(stdout);
},
function (stderr) {
console.log(stderr);
});
当我尝试使用bluebird和map
进行此操作时,我或多或少地围绕this示例对其进行建模。我想采用上面的例子,并能够使用多个命令行参数调用它,如下所示:
arr = [1,2,3,4,5,6]
Promise.map(arr, function(i) {
return execFile("node", [ script, 1 ])
}).then(
function (array_of_all_stdout) {
console.log(array_of_all_stdout);
},
function (array_of_all_stderr) {
console.log(array_of_all_stderr);
});
我觉得我太近了,我找不到用map
读取返回值的方法。有人可以指点我正确的方向吗?