【问题标题】:What happens when an XMLHttpRequest is aborted?当一个 XMLHttpRequest 被中止时会发生什么?
【发布时间】:2023-03-25 20:13:01
【问题描述】:
  • 中止的XMLHttpRequest 是否仍会从服务器下载响应?
  • 请求生命周期的哪个阶段与常规请求不同?
  • 不同浏览器的行为是否不同?
  • 中止请求是不好的做法吗?

【问题讨论】:

标签: javascript http browser xmlhttprequest abort


【解决方案1】:
  • 不,下载将(应该)取消(至少在我的浏览器中会取消)
  • 当一个请求被中止时,它的readyState变为XMLHttpRequest.UNSENT(0)并且请求的状态码设置为0。 -- MDN

  • 不,至少希望不会。他们应该关注the spec
  • 在我看来,绝对不是。让您不再需要在后台运行的请求会浪费带宽和其他资源。最好中止它们。

个人经验中最近的两个用例:

  • 包含各种过滤参数的表格。根据选择的参数,生成的请求有时需要一段时间才能完成。如果您在 A 完成之前选择了一组慢速参数 A,然后选择了一组快速参数 B,您首先会在表中看到 B 的结果,但随后 A 最终会完成并“替换”表中的内容所以你会突然看到 A。
    解决方案:在开始下一个请求之前中止上一个不完整的请求。
  • SPA 页面有时需要长时间运行请求,例如前面提到的表格。导航到其他页面时,有时会在后台运行多个请求以获取不再需要的内容。
    解决方案:注册这些请求以在卸载页面/组件时中止。

【讨论】:

  • 当中止来自客户端的请求时,是否通知服务器?我倾向于认为是this answer 的情况,但我找不到确切的信息。
猜你喜欢
  • 2017-03-24
  • 2011-01-24
  • 1970-01-01
  • 2011-08-25
  • 1970-01-01
  • 2017-09-07
  • 2013-10-05
相关资源
最近更新 更多