我正在构建一个应用程序,在这个应用程序中,我使用axios.all函数同时从前端向后端发送3个axios调用,这些函数在MONGO DB数据库中进行更改。但问题是,我希望以这样一种方式发送这些axios请求,即要么所有3个请求都成功发出,要么如果3个请求中的任何一个失败,则不应发出其他请求调用。我如何在javascript中做到这一点?
let one = "request link 1";
let two = "request link 2";
let three = "request link 3";
const requestOne = axios.post(one, newInventory);
const requestTwo = axios.post(two, element);
const requestThree = axios.post(three, newObj);
axios.all([requestOne,requestTwo,requestThree]).then(axios.spread((...response)=>{
alert("changes are made successfully");
window.location.reload();
})).catch(err=>{
alert("Some error has occured", err);
})
下面是代码。我正在发出3个请求(requestOne、requestTwo、requestThree)。让我们考虑这样一种情况:requestOne由于某种原因失败,而requestTwo和requestThree成功。这就是我想要防止的。如果任何一个请求失败,我想要恢复所有其他成功请求所做的更改。我想要所有请求都成功,或者所有请求都失败。
1条答案
按热度按时间lztngnrs1#
axios.all
和axios.spread
已经被弃用,这在他们的GitHub页面上也有提及。https://github.com/axios/axios#concurrency-deprecated。因此,由于它已被弃用,请改用Promise.all
。以下是实现了Promise.all
的代码如果任何承诺被拒绝,则只返回错误,否则将返回所有承诺的响应。但是,拒绝任何承诺不会停止其他承诺的请求,因为请求在
Promise.all
中并发触发。