nodejs强制同步调用来存储json

我有一个function,使

  1. n调用服务器(在for循环中),
  2. 获取json响应
  3. 将响应组合在一起以创build一个json
  4. 并将该json存储在MongoDB中

    我想等待所有的响应完成,巩固响应,然后存储一个json。 下面是代码

    函数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。 当我将store函数作为callback函数传递时,由于GET调用的asynchronous特性,不会保存任何内容。

我如何强制完成function,然后保存生成的JSON?

非常感谢!

我认为你的问题可以使用Promise.all()轻松解决。 请阅读文档,了解它是如何工作的,但是基本上,您将向数组添加每个承诺,创build一个承诺数组,当您调用此数组上的Promise.all()时,它将等待所有的asynchronous调用完成。