用 AbortController 取消 fetch 请求时,为什么你的 loading 状态还是没关?
在单页应用里,搜索框实时联想、路由切换时取消未完成的请求、组件卸载时清理副作用,这些场景都绕不开「取消请求」这件事。fetch 从诞生起就没有内置取消能力,后来 AbortController 成了标准方案,配合 AbortSignal 传给 fetch 的 signal 选项,调用 abort() 就能让 promise 以 AbortError 拒绝。看起来很简单,但实际项目里经常出现一种尴尬情况:请求确实被取消了,Network 面板里也能看到请求变成 canceled,可页面上的 loading 转圈却一直不消失,或者有时候还会闪一下旧数据。这类问题往往不是 AbortControll...