我有一个制作
的功能并将json存储在MongoDB中
我想等待所有响应完成,合并响应,然后存储产生的一个json。以下是代码
function getBucketStoreJson(服务器,用户名,密码){
var tmp_json = {};
for (var j = 0; j < servers.length; j++){
var server = servers[j];
var options = {
'host': server.toString(),
'port': port,
'path': somepath,
'method': 'GET',
'auth':username.toString()+':'+password.toString()
};
//logger.debug("options : " + JSON.stringify(options));
var request = http.request(options,function(res){
var fullBucketJson = "";
logger.info('STATUS: ' + res.statusCode);
logger.info('HEADERS: ' + JSON.stringify(res.headers));
res.setEncoding('utf8');
res.on('data',function(chunk){
fullBucketJson += chunk;
});
res.on('end',function(){
<more code that assembles the jsons together>
});
});
//res.end();
request.on('error',(e) => {
});
request.end();
}}
我必须等待上面的函数完成才能存储生成的json。当我将存储函数作为回调传递时,由于GET调用的异步性质,所以不会保存任何内容。
如何强制完成该功能,然后保存生成的JSON?
非常感谢!
答案 0 :(得分:1)
我认为使用Promise.all()可以轻松解决您的问题。阅读文档,了解它是如何工作的,但基本上你将每个promise添加到一个数组中,制作一个promises数组,当你在这个数组上调用Promise.all()
时,它将等待所有异步调用完成。