fetch、ajax 和 xhr 之间的区别

Posted

技术标签:

【中文标题】fetch、ajax 和 xhr 之间的区别【英文标题】:Difference between fetch, ajax, and xhr 【发布时间】:2019-02-15 02:03:21 【问题描述】:

这3种调用方式有什么区别?我在我当前的项目中使用 fetch 并且看不出它们之间有任何真正的区别。为什么在 javascript XD 中需要有 30 种不同的方式来做事。

谢谢。

【问题讨论】:

What is the difference between fetch and jquery ajax?的可能重复 ajax 只是一个术语,除非你的意思是 jQuery 的 ajax 方法,它只是在内部使用 xhr 【参考方案1】:

Ajax 是一个流行词,意思是“在不离开页面的情况下从 JavaScript 发出 HTTP 请求”。

XMLHttpRequestfetch 是由浏览器提供的 API,允许从 JavaScript 发出 HTTP 请求。


XMLHttpRequest 从 90 年代就已经存在,并且是事件驱动的,要求您绑定事件侦听器以检测数据何时到达。

fetch 是较新的并且是围绕 Promises 构建的,Promises 现在是在 JavaScript 中执行异步操作的首选方式。除了 Internet Explorer 之外,它已充分确立为 supported 的所有重要位置。但是,它确实缺少 `XMLHttpRequest 提供的某些功能(例如进度监控)。


简而言之,有两种(不是 30 种)专用的 Ajax 方法,其中一种是现代的。


有关如何使用它们的实用介绍,MDN 为您提供:

Using XMLHttpRequest Using Fetch

还有各种库围绕 fetchXMLHttpRequest 提供更方便的 API(例如,Node.js 和浏览器之间的一致 API 或与 Angular 等框架的集成)。

【讨论】:

以上是关于fetch、ajax 和 xhr 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

前端随心记---------Axios/fetch/ajax的区别

axios/fetch和ajax的区别

Fetch和ajax的比较和区别

interviewaxiosajax和fetch的区别

ajax和axiosfetch的区别

ajax和axiosfetch的区别