如何在JSX中渲染2个json

时间:2018-02-08 15:35:20

标签: json reactjs jsx

我有2个json,我可以进行2次不同的API调用。

fetch(`veb/api/roleDetails/${id}`).then(response =>
         response.json()
     ).then(responseJson => {
         console.log('responseJson = ' + JSON.stringify(responseJson));

         this.setState(() => {
             return {

                 allRoleDetails: responseJson,

             }
         });
     }
         ).catch(error => console.error('Error:', error))

第二

fetch(`/api/api/itemTypes`).then(response =>
    response.json()
).then(responseJson => {
    console.log('responseJson = ' + JSON.stringify(responseJson));
    this.setState(() => {
        return {

            names: responseJson,
          }
    });
}
    ).catch(error => console.error('Error:', error))

在第一次api调用中,我得到了itemtypeid,我必须从中调用第二个api调用来获取typeid的名称。即使我得到一个组合的json也没关系 怎么做?任何帮助都会很棒。 感谢

1 个答案:

答案 0 :(得分:1)

Promise.all就是您所需要的。基本上,它的作用是将一组承诺合并到一个承诺中,并将已解决的值返回到集合内的所有内容。

Promise.all([
  fetch(`veb/api/roleDetails/${id}`).then(response => response.json()),
  fetch(`/api/api/itemTypes`).then(response => response.json())
]).then(([allRoleDetails, names]) => {
  // allRoleDetails is the resolve of your first promise
  // names is the resolve of your second promise
}).catch(err => {
  // catch error here
});

有关Promise.all的更多详细信息,请访问:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all