我有這種情況下,我必須多個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'可能會導致錯誤... –