当 Axios post 请求失败并抛出错误时,可能会中断 JavaScript 循环,这会导致后续代码无法执行。解决该问题的一个方法是使用 Promise 来处理 Axios 请求,并在请求失败时捕获错误,而不是抛出错误。下面是一个示例代码:
function postData(data) {
return axios.post('/api/postData', data)
.then(response => {
// 在请求成功时执行的代码
return response.data;
})
.catch(error => {
// 在请求失败时执行的代码
console.error(error);
// 返回一个 rejected 状态的 Promise,以便后续处理错误
return Promise.reject(error);
});
}
async function postDataLoop(dataList) {
for (const data of dataList) {
try {
await postData(data); // 等待请求成功或失败
// 在请求成功时执行的代码
} catch (error) {
// 在请求失败时执行的代码
console.error(error);
}
}
}
postDataLoop([{name: 'Alice'}, {name: 'Bob'}, {name: 'Charlie'}])
.then(() => {
// 在所有请求完成后执行的代码
})
.catch(error => {
// 在请求失败时执行的代码
console.error(error);
});
在上述代码中,postData()
函数使用 Axios 发送 post 请求,并在请求成功时返回 response.data,请求失败时打印错误信息并返回一个 rejected 状态的 Promise。在 postDataLoop()
函数中,使用 for...of 循环遍历 dataList,通过 await 来等待 postData()
函数的返回结果。在请求成功时,可以执行一些代码并继续循环。在请求失败时,可以执行一些代码并继续循环,而不是中断循环。最后,使用 Promise 来处理所有请求的完成事件,并在请求失败时打印错误信息。