用 AbortController 取消 fetch 请求时,为什么 catch 里拿不到 abort 原因?
在单页应用里,搜索框输入联想、路由切换取消未完成请求、组件卸载时终止轮询,这些场景都会用到 AbortController 来取消 fetch。但实际写下来经常遇到一个别扭的地方:调用 controller.abort() 之后,.catch(err => ...) 里拿到的 err 是一个 DOMException,name 是 AbortError,message 也基本是固定文案。如果你想区分“用户主动取消”和“请求超时被取消”,或者想在取消时带上一段业务信息,就会发现 controller.abort() 传进去的参数在旧写法里根本读不到。这个问题牵扯到 AbortController...