Ajax Fetch API 和 XMLHttpRequest 哪个好用?怎么选?

文章导读
Previous Quiz Next XMLHttpRequest 对象用于异步与服务器通信,这意味着我们可以在不刷新整个页面的情况下,在后台与服务器交换数据。XMLHttpRequest 是最常用的技术,因此它被大多数主流浏览器如 Google Chrome、Safari
📋 目录
  1. 语法
  2. 语法
  3. Fetch API 与 XMLHttpRequest
  4. 结论
A A

Fetch API 与 XMLHttpRequest



Previous
Quiz
Next

XMLHttpRequest 对象用于异步与服务器通信,这意味着我们可以在不刷新整个页面的情况下,在后台与服务器交换数据。XMLHttpRequest 是最常用的技术,因此它被大多数主流浏览器如 Google Chrome、Safari、Mozilla Firefox 或 Opera 使用。它还支持纯文本、JSON 数据以及更多数据格式。它使用非常简单,并提供了各种方法和属性来执行操作。我们可以使用 XMLHttpRequest() 构造函数创建一个 XMLHttpRequest 对象。

语法

variableName = new XMLHttpRequest()

使用 new 关键字结合 XMLHttpRequest() 构造函数,我们可以创建一个新的 XMLHttpRequest 对象。在调用 send() 函数向 Web 服务器发送请求之前,必须先创建此对象并调用 open() 函数来初始化它。

Fetch API 提供了一个接口,用于从服务器获取/检索资源。它是 XMLHttpRequest 的现代替代方案。它支持 Request 和 Response 的通用定义,因此如果需要,我们可以在未来访问它们,用于 Cache API、Service Worker、处理或修改请求和响应等。它非常简单、一致且易用。或者可以说,与 XMLHttpRequest 相比,它为创建 HTTP 请求和处理响应提供了更现代和灵活的方法。它基于 Promise API,提供清晰的语法和更好的错误处理。

语法

fetch(res)

其中 fetch() 接受一个必需参数 res。res 参数定义了您想要获取的资源,它可以是字符串、其他对象或 request 对象。除了必需参数外,它还可以接受一个可选参数,例如 method、headers、body、mode、cache、same-origin 等。

Fetch API 与 XMLHttpRequest

以下是 Fetch API 和 XMLHttpRequest 之间的区别:

区别 Fetch API XMLHttpRequest

语法

如我们所知,Fetch API 是基于 Promise 的 API,因此它提供了更清晰的语法和更好的错误处理方法。

XHR 基于回调方法,其语法不如 Fetch API 好。

跨源资源共享 (CORS)

Fetch API 智能处理 CORS 请求,无需任何额外配置。

XMLHttpRequest 需要特殊配置来处理或发出跨源请求。

请求和响应头

Fetch API 提供了更灵活的方式来处理请求和响应头。

XMLHttpRequest 提供了有限的方法来处理请求和响应头。

流式传输和解析

Fetch API 提供了良好的流式传输和解析大型响应的支持,从而提升性能并减少内存使用。

XMLHttpRequest 需要自定义程序来实现此功能。

浏览器兼容性

Fetch API 是新技术,因此可能不受旧版浏览器支持。

XMLHttpRequest 已使用多年,因此几乎被所有浏览器支持。

Cookies 和凭据控制

Fetch API 提供了对 cookies 和凭据的良好控制,因此与 XMLHttpRequest 相比,我们可以更容易进行身份验证和授权。

XMLHttpRequest 对 cookies 和凭据的支持较少。

超时

Fetch API 不支持超时,因此请求将持续直到浏览器选择该请求。

XMLHttpRequest 支持超时。

结论

这些是 Fetch API 和 XMLHttpRequest 之间的主要区别。Fetch API 比 XMLHttpRequest 更强大且更容易理解。它也得到所有现代浏览器的支持,但 XMLHttpRequest 仅受旧版浏览器支持。现在,在下一篇文章中,我们将学习 fetch() 函数。