(XHR) 和 都是用于在浏览器中发起网络请求(AJAX)的 API,但它们属于不同的时代,设计理念也有很大区别。 简单来说: 是老旧的、基于事件的 API;而 是现代的、基于 Promise 的 API。 以下是它们的主要区别: 1. 语法与设计模式 (Syntax & Design) XMLHttpRequest: 基于事件 (Event-based): 你需要监听 或 等事件来处理结果。 回调地狱: 在处理多个依赖请求时,容易导致代码嵌套过深,难以维护。 配置繁琐,对象状态复杂。 Fetch: 基于 Promise: 原生支持 Promise,可以链式调用 ,或者配合 使用,代码更加简洁、线性。 设计更加模块化(Request, Response, Headers 对象分离)。 2. 错误处理 (Error Handling) —— 核心区别 这是开发者从 XHR 转到 Fetch 时最容易踩的坑。 XMLHttpRequest: 如果请求失败(网络错误)或者服务器返回错误状态码(如 404, 500),你通常需要在回调函数里手动判断 。 Fetch: Fetch 认为只要...