XMLHttpRequest中止时会发生什么?

时间:2016-08-26 03:08:47

标签: javascript http browser xmlhttprequest abort

  • 中止XMLHttpRequest是否仍会从服务器下载响应?
  • 请求生命周期中的哪一点与常规请求不同?
  • 不同浏览器的行为有何不同?
  • 中止请求是不好的做法吗?

1 个答案:

答案 0 :(得分:0)

  • 不,下载将(应该)(至少在我的浏览器中)取消
  •   

    请求中止后,其readyState更改为XMLHttpRequest.UNSENT(0),并且请求的状态码设置为0。-MDN

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

最近两个来自个人经验的用例:

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