问问题描述
答精选答案

`fetch` 和 `XMLHttpRequest`(XHR)都是用于发送网络请求的技术,但它们之间存在一些关键的区别:
API 差异 :
`fetch` 是 ES6 中新增的全局函数,而 `XHR` 是浏览器提供的原生 API。
使用对象差异 :
`XHR` 使用 `XMLHttpRequest` 对象,而 `fetch` 使用 `Promise` 对象。
Cookies 处理 :
`fetch` 默认不会携带 cookies,需要手动设置 `credentials` 属性;`XHR` 请求会自动携带 cookies。
请求取消能力 :
`XHR` 可以取消一个正在进行的请求,而 `fetch` 目前没有原生的请求取消机制。
响应类型处理 :
`XHR` 的 `responseType` 属性可以设置响应类型(如 `text`, `json`, `blob` 等),而 `fetch` 需要手动解析响应。
进度监听功能 :
`XHR` 可以监听上传和下载的进度,而 `fetch` 不支持此功能。
错误处理方式 :
`fetch` 只会在网络错误时 `reject` Promise,其他错误(如 HTTP 400 或 500 状态码)都会被视为成功的响应,需要手动判断;`XHR` 会在出现错误时 `reject` Promise。
兼容性 :
`XHR` 兼容性更好,在一些旧版本的浏览器中可能无法使用 `fetch`。
Promise 使用 :
`fetch` 返回的 `Promise` 将不会拒绝 HTTP 的错误状态,即使响应是一个 HTTP 404 或 500。
浏览器支持 :
`fetch` 不是 W3C 规范,因此原生支持率并不高,而 `XHR` 在所有现代浏览器中都有较好的支持。
`fetch` 通常被认为是一种更现代、更简洁的 API,它基于 `Promise`,使得异步操作更加直观和易于管理。然而,`XHR` 在一些方面(如进度监听和错误处理)提供了更丰富的功能。
本文来自作者[诺安持有者在]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/jiaoyuchangshi/202609/2088598.html
评论列表(4条)
我是公众科技网的签约作者“诺安持有者在”!
希望本篇文章《fetch有什么区别》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:`fetch` 和 `XMLHttpRequest`(XHR)都是用于发送网络请求的技术,但它们之间存在一些关键的区别:API 差异 : `fetch` 是 ES6 中新增的全局函数,而 `XHR` 是浏览器提供的原生 API。使用对象差异 : `XHR` 使用 `XMLHttpRequest` 对象,而 `fetch` 使用 `Promise` 对象。Cookies 处理 : `fetch` 默认不会携带 cookies,需要手动设置 `credentials` 属性;`XHR` 请求会自动携带 coo