请求乱序怎么在 Vue / React 中处理

先理解原理和示例,再练习完整口述与追问。

请求身份;取消;最新结果所有权。

请求完成顺序由网络和服务端决定,不能用发送顺序推断。页面应把每个响应与产生它的条件和版本关联,只有当前版本拥有状态写入权。取消是资源优化,序号校验是结果正确性的保护,两者可以组合;loading 与错误也属于受保护状态。

时间线:id=1 请求 A → 切 id=2 请求 B → B 成功 → A 失败。若旧 catch 不校验版本,界面可能在正确数据上覆盖错误提示;旧 finally 也可能过早关闭新 loading。Vue 可把序号存实例或闭包,React 常用 ref;卸载时失效当前版本并清理请求。

不是只在成功分支加一次判断就完整。多个独立请求域要分别版本化,不能一个全局序号使互不相关的面板互相失效。

两者都不能只依赖防抖。Vue 可在 watch 清理里取消旧请求,Vue2 则在监听逻辑和销毁钩子显式管理;React 可在 Effect cleanup 里 abort 或失效结果。共同原则是每次请求绑定身份,只有仍有效的最新任务能修改数据、错误和 loading。事件触发的请求也遵守同一规则,不必强行都放到 watcher/Effect。