Bluebird Promise.map child_process.execFile - 从回调中读取输出

时间:2016-07-06 11:17:07

标签: promise bluebird

我是bluebird的新手,并尝试使用child_process.execFile实例化多个Promise.map,并在完成时读取/合并所有stdout。现在,为了执行一个execFile并阅读errorstdoutstderr,我这样做:

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读取返回值的方法。有人可以指点我正确的方向吗?

0 个答案:

没有答案