使用Promise.all()从Axios转换为Fetch

时间:2016-05-06 23:19:58

标签: webpack es6-promise polyfills fetch-api axios

我正在使用Promise.all()进行一系列axios.get()次调用,并确保它们在继续之前都返回,如下所示:

Promise.all([getJSON1(), getJSON2()])
    .then((arr) => {
        var data = {
            json1: arr[0],
            json2: arr[1]
        };

        return data;
    });

函数getJSON1()getJSON2()如下所示:

function getJSON1() {
    return axios.get('json1-url.json');
}

这一切都运行正常,但是我想知道用webt替换axios是否会减少我最终的bundle.js的大小,当webpack完成它的时候。

我正在尝试fetch polyfill并根据this blog将其与webpack集成,但我不确定如何调整getJSON1()以使用fetch。我尝试了以下方法:

function getJSON1() {
    return fetch('json1-url.json');
}

这导致 TypeError:Object不是构造函数(评估'新Promise')

1 个答案:

答案 0 :(得分:0)

  

我们可以像这样调用fetch方法,希望它可以帮到你: -

function getJSON1() {
    return fetch('json1-url.json')
      .then((response) => response.json())
      .then((responseJson) => {
        return responseJson;

      })
      .catch((error) => {
        console.error(error);
      });
}