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 / ):
- 中止请求;
- 报告进度。
取
- 缺less一个内置的方法来使用文档
- 没有办法设置超时呢
- 不能覆盖响应的内容types标题
XHR
- 没有办法不发送cookie
- 无法返回
FormData
实例 - 没有相当于
fetch
的no-cors
模式