javascript - 如何在node.js中使用Promise.all和Request?

标签 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() }),
                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。问题是我没有获取,我有请求(我什至应该使用请求吗?)。 https://github.com/request/request 原来是这样用的...

var request = require('request');

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

但是我该如何将 request 与 Promise.all 一起使用呢?因为我想获取多个内容,并且仅在所有内容完成后(但在 Node 中)处理它们,而且我不想使用一堆回调。

最佳答案

更简洁地说,安装node-fetch后,您可以进行解析为json的promise-returning fetch...

const fetch = require('node-fetch');
function fetchJSON(url) {
    return fetch(url).then(response => response.json());
}

...从一组 url 构建一系列 Promise...

let urls = [url1, url2, url3, url4];
let promises = urls.map(url => fetchJSON(url));

...当这些 promise 兑现时做点什么...

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

关于javascript - 如何在node.js中使用Promise.all和Request?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49580193/

相关文章:

node.js - sudo pm2 命令未找到 pm2 已安装

javascript - 带有 promise 的 MySQL - 失去值(value)

javascript - Promise.all 返回 [null, null] 且未按预期返回

javascript - Express+pug 中的动态 URL

javascript - 如何清除jqgrid表中的大数据?

javascript - node.js + express + handlebars 在单个请求中呈现多个 View

javascript - 一旦组件被销毁,在 initComponent 函数中创建的存储是否会发生内存泄漏,或者这些存储是否会被垃圾收集?

javascript - 如何从 ejs 将 JSON 数组对象传递给函数

javascript - 创建一个(ES6) promise 而不开始解决它

Javascript cdn资源失败