我有这种情况下,我必须多个CLI命令返回JSON
,读取每个结果并采取特定字段,最后将它们合并到最终的JSON
。所有的CLI命令都是相互独立的。如何合并使用异步并行的最终回调的所有回调结果
var merge = require('./object-assign');
async.parallel(
[
function(callback) {
var response = {},
error {};
var test = exec(command);
test.stdout.on('data', function(data) {
response = data;
});
test.stderr.on('data', function(data) {
error.message = data;
});
test.on('close', function() {
//callback1
callback(error, response);
})
},
function(callback) {
var response = {},
error {};
var test = exec(command);
test.stdout.on('data', function(data) {
response = data;
});
test.stderr.on('data', function(data) {
error.message = data;
});
test.on('close', function() {
//callback2
callback(error, response);
})
}
//Few more callbacks
], function(err, results) {
//using object-assign to merge
var test = merge(result[0], result[1]);
//when callback1 completes result[0] is getting values where as result[1]
//is undefined since it is getting executed.
}
);
callback1首先完成并发送响应给结果的最终回调,callback2完成并发送它的响应。 如何确保在最终回调中完成所有回调,以便我可以合并结果以得到最终的JSON
?
异步并行是否正确?如果不是,这种情况最好的是什么?
应该已经做什么你问。它不会达到最后的回调,直到所有的并行功能得到解决 – Jacob
你检查了'err'变量吗?你的'callback2'可能会导致错误... –