我有一行多个未决请求
const requests = [];
requests.push(axios.post('/request1', {moo:1});
requests.push(axios.post('/request2', {moo:2});
requests.push(axios.post('/request3', {moo:3});
Promise.all(requests).then((reponse) => {
debugger;
}).catch((err) => {
debugger;
});
如果其中一个失败了,我将尝试放弃所有。不幸的是,如果其中一个失败,下一个请求仍然会发出。
我尝试了一些取消代码,但下一个请求仍然会触发
const requests = [];
const source = axios.CancelToken.source();
const cancelToken = source.token;
requests.push(axios.post('/request1', {moo:1}, {cancelToken} );
requests.push(axios.post('/request2', {moo:2}, {cancelToken} );
requests.push(axios.post('/request3', {moo:3}, {cancelToken} );
Promise.all(requests).then((reponse) => {
debugger;
}).catch((err) => {
source.cancel("Request canceled");
debugger;
});
1条答案
按热度按时间bjg7j2ky1#
我尝试了一些取消代码,但下一个请求仍然会触发
你在这里开始请求(如果我假设结束
)
在每行上):此时,请求正在进行中。
Promise.all
不运行任何东西,它观察已经运行的东西。使用取消令牌的代码将在您启动拒绝处理程序时尽可能取消请求
Promise.all
的承诺会运行,但除非您连续运行请求(一次一个),否则它们都会在这之前启动。如果你想把它们串联起来,最简单的方法就是使用
async
功能: