你知道 XHR 和 Fetch 的区别吗?

简介: 你知道 XHR 和 Fetch 的区别吗?

当谈论Web开发中的数据请求时,XHR(XMLHttpRequest)和Fetch API是两个常用的工具。它们都是用于从服务器获取数据的技术,但在实现和功能上存在一些区别。下面将详细讨论XHR和Fetch的区别。

XMLHttpRequest(XHR)

1. 发起请求

XHR是一个用于发起HTTP请求的JavaScript对象。通过实例化一个XHR对象,可以设置请求的各种参数,如请求类型(GET、POST等)、URL、是否异步等。

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://example.com/data', true);
xhr.send();

2. 异步处理

XHR默认是异步的,可以通过设置第三个参数为false来将其变为同步。异步请求通过事件处理函数来处理响应。

xhr.onreadystatechange = function() {
   
  if (xhr.readyState == 4 && xhr.status == 200) {
   
    console.log(xhr.responseText);
  }
};

3. 请求和响应类型

XHR支持多种请求和响应类型,包括文本、JSON、XML等。可以通过设置xhr.responseType来指定希望得到的响应类型。

xhr.responseType = 'json';

Fetch API

1. 简化的API

Fetch是一种更现代的API,提供了一种更简单和灵活的方式来进行网络请求。

fetch('https://example.com/data')
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

2. 返回Promise

Fetch返回一个Promise,使得代码更加清晰和易于处理。它采用了链式调用,可以方便地处理请求和响应。

3. 请求和响应对象

Fetch引入了RequestResponse对象,可以更方便地构建请求和处理响应。

var myHeaders = new Headers();
myHeaders.append('Content-Type', 'application/json');

var myInit = {
   
  method: 'POST',
  headers: myHeaders,
  body: JSON.stringify({
    key: 'value' }),
  mode: 'cors',
  cache: 'default'
};

fetch('https://example.com/data', myInit)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

总结

XHR和Fetch都是用于进行数据请求的工具,但Fetch提供了更简单、灵活和现代的API。Fetch返回Promise,采用了更直观的链式调用,同时引入了RequestResponse对象,使得请求和响应的处理更加清晰。XHR仍然是许多项目中的标准,但Fetch逐渐成为首选工具,特别是在现代Web开发中。在选择使用其中之一时,开发者应该根据项目需求和个人偏好做出明智的选择。

目录
相关文章
|
4月前
|
XML 前端开发 JavaScript
Ajax、Fetch、Axios
Ajax、Fetch、Axios
86 25
|
6月前
|
JSON 前端开发 安全
XHR 和 Fetch方法小知识
【6月更文挑战第7天】XHR 和 Fetch方法小知识
330 0
|
6月前
|
JSON 前端开发 JavaScript
Axios 和 Fetch,哪个才是你的最佳选择?
在前端开发中,处理 HTTP 请求是一个常见且重要的任务。JavaScript 提供了多种方式来发送网络请求,其中最受欢迎的两种方式分别就是 Fetch API 和 Axios。尽管两者都能完成同样的任务,即从客户端向服务器发送请求并接收响应,但它们在使用方式、功能及灵活性方面各有千秋,下面我们简单了解下。
|
7月前
|
JSON 数据格式
Fetch
Fetch
102 0
|
JSON 前端开发 JavaScript
ajax和axios、fetch的区别
ajax和axios、fetch的区别
|
前端开发
从XHR、Promise到手动封装简易axios
从XHR、Promise到手动封装简易axios
128 0
|
JSON 前端开发 数据格式
Ajax&Fetch学习笔记 08、Fetch
Ajax&Fetch学习笔记 08、Fetch
Ajax&Fetch学习笔记 08、Fetch
|
存储 JSON JavaScript
Ajax&Fetch学习笔记 04、FormData使用
Ajax&Fetch学习笔记 04、FormData使用
Ajax&Fetch学习笔记 04、FormData使用
|
Web App开发 数据采集 JSON
Fetch和Axios请求对比
接口请求
322 0
|
存储 前端开发
AJAX问题 XMLHttpRequest.status = 0是什么含义
在调用AJAX的时候遇到了XMLHttpRequest. status为0 的情况,http协议里可是没这个状态码的,众所周知,XMLHttpRequest. Status为HTTP请求状态码,一般为1xx-5xx,这个0是什么含义,让我觉得很好奇。
3986 0