竞态的表现是后发的请求先返回,先发的结果反而把页面覆盖了。axios 从 0.22 起用 AbortController:组件里建一个 controller,把 signal 放进请求配置,切换页面或重新请求前调用 abort()。取消后 axios 抛的是 ERR_CANCELED,捕获时要用 isCancel 把它和真实错误分开,否则页面上会弹一堆没意义的失败提示。
const c = new AbortController()
axios.get('/api/list', { signal: c.signal })
.catch(e => { if (!axios.isCancel(e)) throw e })
// 离开页面或重新请求前
c.abort()
THE END






暂无评论内容