javascript - 使用 Promise.all 解决获取请求

标签 javascript promise

我有一个包含 4 个请求对象的数组,我想在这些对象上使用 Fetch API 并取回 promise 。然后我想解决这些 promise 中的每一个并取回值(value)。

以下是我构建请求对象的方式。

let requestsArray = urlArray.map((url) => {
        let request = new Request(url, {
            headers: new Headers({
                'Content-Type': 'text/json'
            }), 
            method: 'GET'
        });

        return request;
    });

下面是我尝试使用 Promise.all()

的方式
Promise.all(requestsArray.map((request) => {
        return fetch(request).then((response) => {
            return response.json();
        }).then((data) => {
            return data;
        });
    })).then((values) => {
        console.log(values);
    });

最后一个 console.log(values) 不会向控制台打印任何内容。我使用 Promise.all() 错了吗?

我知道第一个请求通过了,当我单独运行每个请求时,它工作正常。唯一的问题是当我尝试同时运行它们时。

最佳答案

我看不出有任何问题,对我来说它返回得很好:https://jsfiddle.net/np5bx03j/ 但是,这是使用 jsfiddles /echo/json URL 而非您的原始 URL 进行的测试。因此,我假设您的情况发生了一些错误。 我建议添加一个 catch 来记录错误:

Promise.all(requestsArray.map((request) => {
    return fetch(request).then((response) => {
        return response.json();
    }).then((data) => {
        return data;
    });
})).then((values) => {
    console.log('values', values);
}).catch(console.error.bind(console));

编辑:为了完整起见:根据 API ( MDN ) 或其他任何内容,我看不到任何问题。

关于javascript - 使用 Promise.all 解决获取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45389677/

相关文章:

javascript - 为 Promise 结果对象的每个数组元素调用异步函数,进行更改并返回该对象

javascript - 有前途的听众

java - 异步方法抛出异常是否合理?

javascript - jquery 检查单选框是否在价格计算器上被选中

javascript - Elasticsearch 数据表

javascript - 可以用生成器函数代替 promise 管理吗?

javascript - 'LOUD' 错误的可接受 promise 模式?

javascript - 通过 Javascript 分配 CSS 值

javascript - 当 anchor 标记正下方有一个 p 元素时,如何使 anchor 标记填充 li 元素

JavaScript mouseover 和 mouseleave 事件