Fetch API和XMLHttpRequest有什么区别?

我知道提取是使用承诺,他们都允许你做一个服务器的AJAX请求。 我已经读过,fetch有一些额外的function,这些function在XMLHttpRequest中是不可用的(并且在获取polyfill中,因为它基于XHR)。 抓取API具有哪些额外function?

有一些事情,你可以做与提取而不​​是与XHR:

  • 您可以使用cachingAPI与请求和响应对象;
  • 您可以执行no-cors请求,从不执行CORS的服务器获得响应。 您不能直接从JavaScript访问响应正文,但可以将其与其他API(例如Cache API)一起使用;
  • stream式响应(使用XHR将整个响应caching在内存中,通过读取您将能够访问低级stream)。 这在所有浏览器中都不可用,但很快就会出现。

您可以使用XHR做一些事情,但是您不能使用抓取function做一些事情,但迟早会提供(请阅读“未来改进”一节: https://hacks.mozilla .org / 2015/03 / this-api-is-so-fetching / ):

  • 中止请求;
  • 报告进度。

本文https://jakearchibald.com/2015/thats-so-fetch/包含更详细的说明。;

  • 缺less一个内置的方法来使用文档
  • 没有办法设置超时呢
  • 不能覆盖响应的内容types标题

XHR

  • 没有办法发送cookie
  • 无法返回FormData实例
  • 没有相当于fetchno-cors模式