fetch和XHR(XMLHttpRequest)分别是什么?

  • fetch和XHR都是是获取远端数据的方式。
  • fetch是原生js方法,没有使用XMLHttpRequest对象,使用fetch可以不用引用http的类库即可实现。提供了一种简单,合理的方式来跨网络异步获取资源。
  • XMLHttpRequest(XHR)是一个构造函数,对象用于与服务器交互。通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL。即允许网页在不影响用户操作的情况下,更新页面的局部内容。可以用于获取任何类型的数据。

fetch的一些问题

1)fetch只对网络请求报错,对400,500都当做成功的请求,服务器返回 400,500 错误码时并不会 reject,只有网络错误这些导致请求不能完成时,fetch 才会被 reject。
2)fetch默认不会带cookie,需要添加配置项: fetch(url, {credentials: 'include'})
3)fetch不支持abort,不支持超时控制,使用setTimeout及Promise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费
4)fetch没有办法用原生监测异步请求,而XHR可以

fetch同构方便,使用isomorphic-fetch

.fetch 不管请求处理成功还是失败,都会触发promise的resolve状态回掉。这个和传统的ajax 框架是有点区别的。fetch只有当网络故障导致请求发送失败或者跨域的时候才会触发reject的逻辑。我们可以通过response 对象的ok是否是true来判断是否是真正的成功。

XHR 和 Fetch 的使用详解和区别总结_陆小森_红齐飘飘的博客-CSDN博客

fetch和XHR的区别

1、调用方式不同

用 XHR 发起一个GET请求

var xhr = new XHMHttpRequest();
xhr.open('GET', url);
xhr.responseType = 'json';
xhr.onload = function(){console.log(xhr.response);
};
xhr.onerror = function(){console.log('something wrong~ ╮( ̄▽ ̄)╭');
};
xhr.send();

用 Fetch 完成同样的请求

fetch(url).then(function(response){return response.json();
}).then(function(jsonData){console.log(jsonData);
}).catch(function(){console.log('something wrong~ ╮( ̄▽ ̄)╭');
});

fetch和XHR请求有关的特性

https://segmentfault.com/a/1190000010417624

二者的缺点

1、fetch有兼容问题

两者的未来

Fetch API未来基于 Fetch 和 Service Worker 的缓存和请求拦截技术。

fetch与XHR的区别与优势 - 左耳的风铃lal - 博客园

fetch和XHR的区别相关推荐

  1. fetch与XHR的区别与优势

    Fetch API更加现代 XHR 和 Fetch API 最显著的区别就是调用方式不同.这一点大家应该都知道吧. 举个例子,下面两端代码完成的是同一功能: // 用 XHR 发起一个GET请求 va ...

  2. fetch 不是xhr_fetch与XHR的区别与优势

    Fetch API更加现代 XHR 和 Fetch API 最显著的区别就是调用方式不同.这一点大家应该都知道吧. 举个例子,下面两端代码完成的是同一功能: // 用 XHR 发起一个GET请求 va ...

  3. fetch和ajax的区别?

    一.写在前面 今天总结一下fetch和ajax的区别. 二.Ajax ajax的本质就是使用XMLHttpRequest对象来请求数据,下面是简单的原生js实现. function ajax(url, ...

  4. ajax与axios使用哪个好,ajax、axios、fetch之间的详细区别以及优缺点

    将jQuery的ajax.axios和fetch作个简单的比较,所谓仁者见仁智者见智,最终使用哪一个仍是自行斟酌javascript 1.jQuery ajax 前端 $.ajax({ type: ' ...

  5. #39;git pull#39;和#39;git fetch#39;有什么区别?

    主持人注意:鉴于此问题已经发布了67个答案 (其中一些已删除),请在发布另一个问题之前考虑您是否正在贡献新内容 . git pull和git fetch什么区别? #1楼 我花了一点时间来了解有什么区 ...

  6. JAVA面试要点002_Git中fetch和pull的区别

    原文: http://www.tech126.com/git-fetch-pull/ Git中从远程的分支获取最新的版本到本地有这样2个命令: 1. git fetch:相当于是从远程获取最新版本到本 ...

  7. Git指令中fetch和pull的区别fetch和pull的区别

    https://www.cnblogs.com/sxy370921/p/11734628.html

  8. fetch 不是xhr_春招|前端2019应届春招:不是被大厂选,而是选大厂(字节跳动,美团,网易)...

    作者:Thescavenger 链接:https://www.nowcoder.com/discuss/163165 来源:牛客网 你需要的前端面经 个人情况 本科,成都双非大学,大三开始正式学习前端 ...

  9. 【react】 react 中 前后端数据的交互方式 (原生的ajax、jq的ajax、axios、fetch )...

    这是fetch  请求数据的方式 ---fetch---基本使用 一.fetch fetch是一种XMLHttpRequest的一种替代方案,在工作当中除了用ajax获取后台数据外我们还可以使用fet ...

最新文章

  1. 基于MT6752/32平台 Android L版本驱动移植步骤
  2. oracle按某个字段分组然后从每组取出最大的一条纪录
  3. 一套代码编译出ios和android,Hippy: Hippy 是一个新生的跨端开发框架,目标是使开发者可以只写一套代码就直接运行于三个平台(iOS、Android 和 Web)...
  4. 操作系统——CPU、计算机的构成
  5. C#.Net使用线程池(ThreadPool)与专用线程(Thread)
  6. HDU.1008 Elevator
  7. Python实现图像的全景拼接
  8. UVALive 7461 - Separating Pebbles
  9. NOI-Linux使用技巧
  10. 安卓 运行 linux 桌面,安卓上运行原生Xorg和Linux桌面记录[完结]
  11. 爱荷华大学计算机科学专业,爱荷华大学计算机专业
  12. Makerbase_ODrive常见驱动问题及解决
  13. 《伟大是熬出来的》冯仑与年轻人闲话人生之一
  14. 关闭与卸载xxx终端防护系统时需要密码怎么办?
  15. 【使用python和flask建个人博客】增加了重复类型的卡片功能,用于更好的完成日常的工作与生活
  16. jdk groovy版本_Groovy JDK(GDK):日期和日历
  17. JAVAWEB开发之——Linux命令实战、虚拟机和centos的安装以及联网、常用命令、vi编辑以及软件的安装、sftp的使用
  18. CST入门——求解器简介与时域、频域和积分求解器设置
  19. python学习,共同成长,招集python+odoo共同创业合伙人
  20. AdBlock插件,在谷歌浏览器中屏蔽百度热搜或其他广告

热门文章

  1. [引擎搭建记录] 遮罩加速的软光栅遮挡剔除
  2. c语言 substr,如何在C语言实现substr()
  3. linux usb信息查看工具,Linux下,查看USB设备信息
  4. [linux无线子系统]主动扫描之发送Probe Request帧
  5. 英文字母替换加密(大小写转换+后移1位)PTA
  6. 防360屏蔽办法 代码一
  7. CAD图纸怎么转换PDF格式?怎样转换更加高效?
  8. 一些比较实用的书籍推荐
  9. 网页界面滚动截图(长图)的三种实用方法总结
  10. 赛门铁克Symantec SSL证书产品及服务