JavaScript 中 AbortController 在取消 fetch 请求时,为什么有时会抛出 DOMException?
在单页应用里频繁切换页面或搜索框边输入边请求时,很容易遇到旧请求覆盖新结果的情况。常见的做法是用一个标志位忽略过期响应,但网络请求仍在后台跑,浪费连接和内存。AbortController 配合 fetch 的 signal 能真正取消请求,不过在调用 abort() 之后,fetch 会 reject 一个名为 AbortError 的 DOMException。很多人在 catch 里只判断 error.name,却没注意浏览器实现差异:有的环境抛出的异常是 DOMException 实例,有的则是普通 Error,message 也可能不同。更隐蔽的是,当 signal 已经被 abor...