我有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也没关系 怎么做?任何帮助都会很棒。 感谢
答案 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