Axios发送POST请求后同时触发then和catch回调的问题如何解决
问题根因
- 核心错误是你没有给
.then()、.catch()传入回调函数,而是直接执行了alert方法:
JS代码执行到Axios.post链式调用的部分时,会同步计算.then()和.catch()括号里的表达式,也就是立刻执行alert('Success')和alert('Failure')弹出两个提示,再把alert的返回值undefined注册为异步回调。所以不管后续请求成功还是失败,两个弹窗都会提前触发,和请求的最终结果完全无关。
修复方案
把alert语句包裹在箭头函数中,作为异步回调传给.then()和.catch()即可,只有请求对应状态触发时才会执行对应的alert逻辑。
修复后的代码如下:
const submitForm = () => { Axios.post('http://localhost:3001/api/insert',{ manager: manager, decisionDate: decisionDate.toLocaleDateString(), }).then(() => { alert('Success') }).catch(() => { alert('Failure') }) }
内容的提问来源于stack exchange,提问作者José Freitas
相关产品推荐
相关产品推荐

