我正在使用 React 应用程序。我必须使用来自 3 个不同 API 的响应创建 2 个对象。例如:
- DataObject1 将使用 API1 和 API2 创建
- DataObject2 将使用 API1、API2 和 API3 创建
因此,我正在考虑通过确保 1 仅调用每个 API 一次来实现此目的的最佳方法是什么。
我在想:
const requestOne = axios.get(API1);
const requestTwo = axios.get(API2);
const requestThree = axios.get(API3);
axios.all([requestOne, requestTwo, requestThree]).then(axios.spread((...responses) => {
const dataObject1 = createDataObject1(responses[0], responses[1]);
const dataObject2 = createDataObject2(responses[0], responses[1], responses[2]);
// use/access the results
})).catch(errors => {
// react on errors.
})
const createDataObject1 = (response1, response2) => { //Combine required data and return dataObject1 }
const createDataObject2 = (response1, response2, response3) => { //Combine required data and return dataObject2 }
有更好的方法吗?
最佳答案
看起来不错。
您可以更改此设置
axios.all([requestOne, requestTwo, requestThree]).then(axios.spread((...responses) => {
const dataObject1 = createDataObject1(responses[0], responses[1]);
const dataObject2 = createDataObject2(responses[0], responses[1], responses[2]);
// use/access the results
})).catch(errors => {
// react on errors.
})
至
axios.all([requestOne, requestTwo, requestThree]).then((response) => {
const dataObject1 = createDataObject1(responses[0], responses[1]);
const dataObject2 = createDataObject2(responses[0], responses[1], responses[2]);
// use/access the results
}).catch(errors => {
// react on errors.
})
因为没有必要分散和休息。
如果您不想使用 responses[0]
、responses[1]
等,那么您可以使用:
axios.all([requestOne, requestTwo, requestThree]).then(axios.spread((response1, response2, response3) => {
const dataObject1 = createDataObject1(response1, response2);
const dataObject2 = createDataObject2(response1, response2,response3);
// use/access the results
})).catch(errors => {
// react on errors.
})
关于javascript - 如何最佳地组合多个 axios 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61038630/