xhr、ajax、axois、fetch的区别

一、XMLHttpRequest (XHR)、AJAX、Axios 和 Fetch API 都是用于在不重新加载整个页面的情况下与服务器进行通信的技术和库。它们在处理超时、终止请求、进度反馈等机制上有一些显著的差异。以下是它们的详细比较:

1. XMLHttpRequest (XHR)

XMLHttpRequest 是一种浏览器内置的对象,用于与服务器进行交互。它可以发送和接收各种格式的数据,包括 JSON、XML、HTML 和纯文本。

特点

  • 原生 JavaScript 对象,无需额外引入库。
  • 支持同步和异步请求。
  • 语法较为复杂,需要手动处理回调和状态变化。
  • 支持超时设置、终止请求和进度事件。

示例

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

// 设置超时
xhr.timeout = 5000; // 5秒

// 处理超时
xhr.ontimeout = function () {
   
   
  console.error('Request timed out');
};

// 处理进度事件
xhr.onprogress = function (event) {
   
   
  if (event.lengthComputable) {
   
   
    const percentComplete = (event.loaded / event.total) * 100;
    console.log(`Progress: ${
     
     percentComplete}%`);
  }
};

// 处理请求完成
xhr.onreadystatechange = function () {
   
   
  if (xhr.readyState === 4 && xhr.status === 200) {
   
   
    console.log(JSON.parse(xhr.responseText));
  }
};

// 终止请求
const abortButton = document.getElementById('abortButton');
abo
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值