Javascript 如何在node.js中将Promise.all与Request一起使用?

Javascript 如何在node.js中将Promise.all与Request一起使用?,javascript,node.js,promise,Javascript,Node.js,Promise,我想做以下几点: Promise.all([ fetch(url1).then(function(response){ return response.json() }), fetch(url2).then(function(response){ return response.json() }), fetch(url3).then(function(response){ return response.json() }),

我想做以下几点:

Promise.all([
    fetch(url1).then(function(response){ return response.json() }),
        fetch(url2).then(function(response){ return response.json() }),
            fetch(url3).then(function(response){ return response.json() }),
                fetch(url4).then(function(response){ return response.json() })
    ]).then(allResponses => {

    var data1 = allResponses[0];
    var data2 = allResponses[1];
    var data3 = allResponses[2];
    var data4 = allResponses[3];

    // process data....

    });
上面是React.js代码,我想做同样的事情,但是在服务器上使用Node.js。问题是我没有fetch,我有request(我应该使用request吗?)。 它是这样使用的

var request = require('request');

request(url1, function (error, response, body) {
});

但我如何使用带承诺的请求?因为我想获取多个内容,并且只在节点中完成所有操作后处理它们,而且我不想使用大量回调

将请求转换为承诺:

function promiseRequest(url) {
  return new Promise(resolve => {
    request(url, function(err, response, body) {
      resolve(body);
    });
  });
}
然后你可以做类似的事情

const allBodies = await Promise.all([
  promiseRequest(url1),
  promiseRequest(url2),
  promiseRequest(url3)
]);
但是如果在本地使用
fetch
会更好。

我就是这么做的

npm install node-fetch
然后

var fetch = require('node-fetch');
然后我可以使用上面的代码,即

Promise.all([
    fetch(url1).then(function(response){ return response.json() }),
        fetch(url2).then(function(response){ return response.json() }),
            fetch(url3).then(function(response){ return response.json() }),
                fetch(url4).then(function(response){ return response.json() })
    ]).then(allResponses => {

    var data1 = allResponses[0];
    var data2 = allResponses[1];
    var data3 = allResponses[2];
    var data4 = allResponses[3];

    // process data....

    });

更简单地说,在安装节点获取之后,您可以承诺返回解析为json的获取

const fetch = require('node-fetch');
function fetchJSON(url) {
    return fetch(url).then(response => response.json());
}
…从URL数组构建承诺数组

let urls = [url1, url2, url3, url4];
let promises = urls.map(url => fetchJSON(url));
…当那些承诺解决时做点什么

Promise.all(promises).then(responses => console.log(responses));

您也可以在节点上安装fetch。您是否尝试过查看请求承诺?它使请求成为承诺<代码>npm安装请求承诺然后添加
var request=require('request-promise')