我知道fetchapi使用Promises,它们都允许您对服务器执行AJAX请求
我读到fetchapi有一些额外的特性,这些特性在XMLHttpRequest中是不可用的(在fetchapi polyfill中,因为它基于XHR)
Fetch API有哪些额外功能
您可以使用fetch而不是XHR来做一些事情:
- 您可以将缓存API用于请求和响应对象
- 您可以执行
无cors请求,从未实现cors的服务器获得响应。您不能直接从JavaScript访问响应体,但可以将其与其他API(例如缓存API)一起使用 - 流式响应(使用XHR,整个响应在内存中缓冲,使用fetch,您将能够访问低级流)。这还不是所有浏览器都可以使用的,但很快就会出现
有两件事你可以用XHR做,但用fetch做不到,但它们迟早会出现(请阅读这里的“未来改进”一段:https://hacks.mozilla.org/2015/03/this-api-is-so-fetching/):
- 中止请求(正如@sideshowbarker在评论中解释的那样,这现在在Firefox和Edge中起作用)
- 报告进展情况
本文https://jakearchibald.com/2015/thats-so-fetch/ 包含更详细的说明