XMLHttpRequest中止时会发生什么?

Tre*_*ent 5 javascript browser http xmlhttprequest abort

  • 中止者是否XMLHttpRequest仍会从服务器下载响应?
  • 在请求生命周期中的什么时候与常规请求有什么不同?
  • 不同的浏览器行为是否不同?
  • 中止请求是不好的做法吗?

Svi*_*ish 2

  • 不,下载将(应该)取消(至少在我的浏览器中是这样)
  • 当请求被中止时,其readyState将更改为XMLHttpRequest.UNSENT(0),并且请求的状态代码将设置为0。 -- MDN

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

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

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