JavaScript 中 AbortController 的中断请求与事件监听清理实战
最近在排查一个后台管理系统里偶发的内存泄漏问题时,发现几个页面在快速切换菜单后,仍然有未完成的 fetch 请求在持续占用资源,甚至触发了 setState 警告。这类场景其实很常见:用户点击某个按钮发起数据请求,还没等响应回来就跳走了,或者连续触发了多个相同请求,旧请求返回后覆盖了新数据。以前我们习惯用 axios 的 CancelToken 或者自己维护一个 flag 来判断是否忽略结果,但这只是“忽略”,请求本身并没有被真正取消,浏览器的网络连接依然存在。AbortController 提供了一种更标准的取消机制,不仅能中断 fetch,还能移除事件监听器,甚至配合自定义异步任务使用。这...