来聊一聊window.fetch

Fetch 是浏览器提供的原生 AJAX 接口。使用 window.fetch 函数可以代替以前的 $.ajax$.get和 $.post

AJAX 的原理

  var xhttp = new XMLHttpRequest();xhttp.onreadystatechange = function() {if (this.readyState === 4 && this.status === 200) {console.log(this.responseText);}};xhttp.open("GET", "/", true);xhttp.send();
$.ajax('/').then(function(response){console.log(response)
})

由于使用 XMLHttpRequest 对象来发送异步请求的相当麻烦,所以大家才喜欢使用 jQuery 提供的 $.ajax 方法。

Fetch的出现

随着 React.js、Angular.js 和 Vue.js 这些前端框架的流行,很多单页面应用已经不再使用 jQuery 了,这意味着你要自己对 XMLHttpRequest 进行封装,而很多人选择封装一个跟 jQuery.ajax 差不多的接口。Fetch API 的出现了-就是浏览器帮你把 jQuery.ajax 给实现了,以后大家都是用 fetch 来发送异步请求就好了。

Fetch用法

fetch('/').then(function(response){return response.json();}).then(function(data){}).catch(function(err){});

处理Text/HTML

fetch('/').then(function(response){return response.text();
}).then(function(data){}).catch(function(err){});

提交参数

fetch('/', {method: 'post',body: new FormData(...),headers: {'Accept': 'application/x-www-form-urlencoded','Content-Type': 'application/json'}
});
fetch('/', {method: 'post',body: JSON.stringify({...}),headers: {'Accept': 'application/json','Content-Type': 'application/json'}
});

Fetch API 的特点

  • 基于 Promise(如果你没有学过 Promise,强烈建议你学一学)
  • 不需要依赖第三方库,就可以优雅地使用 AJAX

Fetch API 的问题

  • 使用 fetch 无法取消一个请求。这是因为 Fetch API 基于 Promise,而 Promise 无法做到这一点。不过相信很快就会有对策。

兼容性

  • 有的浏览器没有 Fetch API,没有关系,只要引入一个 polyfill 就可以了:GitHub - github/fetch: A window.fetch JavaScript polyfill.

来聊一聊window.fetch相关推荐

  1. Javascript window.fetch API

    Javascript window.fetch API 关于Ajax,一个最让人诧异的秘密就是,XMLHttpRequest的底层API其实并不是为现在普遍流行的做法设计的,它本是用来做其它事情的.虽 ...

  2. h5的fetch方法_Javascript window.fetch API

    关于Ajax,一个最让人诧异的秘密就是,XMLHttpRequest的底层API其实并不是为现在普遍流行的做法设计的,它本是用来做其它事情的.虽然XMLHttpRequest目前为止提供的API还是非 ...

  3. 在JS 中使用 fetch 初体验

    在前端快速发展地过程中,为了契合更好的设计模式,产生了 fetch 框架,此文将简要介绍下 fetch 的基本使用. 在 AJAX 时代,进行 API 等网络请求都是通过 XMLHttpRequest ...

  4. “约见”面试官系列之常见面试题之第七十八篇之fetch(建议收藏)

    etch是一种HTTP数据请求的方式,是XMLHttpRequest的一种替代方案.fetch不是ajax的进一步封装,而是原生js.Fetch函数就是原生js,没有使用XMLHttpRequest对 ...

  5. Js中fetch方法

    Js中fetch方法 fetch()方法定义在Window对象以及WorkerGlobalScope对象上,用于发起获取资源的请求,其返回一个Promise对象,这个Promise对象会在请求响应后被 ...

  6. 传统 Ajax 已死,Fetch 永生

    原谅我做一次标题党,Ajax 不会死,传统 Ajax 指的是 XMLHttpRequest(XHR),未来现在已被 Fetch 替代. 最近把阿里一个千万级 PV 的数据产品全部由 jQuery 的 ...

  7. fetch 另一种ajax解决方案

    AJAX即"Asynchronous JavaScript and XML"(异步的JavaScript与XML技术),指的是一套综合了多项技术的浏览器端网页开发技术. 传统的aj ...

  8. ajax fetch api,fetch 简介: 新一代 Ajax API

    AJAX半遮半掩的底层API是饱受诟病的一件事情. XMLHttpRequest 并不是专为Ajax而设计的. 虽然各种框架对 XHR 的封装已经足够好用, 但我们可以做得更好.更好用的API是 fe ...

  9. vue 使用fetch 出现问题解决以及 相应知识学习

    使用fetch 进行请求出现的问题 :8080/#/ohho:1 Failed to load http://test.houd.cn:8081/rest/api/test/async/: Respo ...

最新文章

  1. RenderingHints 参数
  2. Spring Cloud Gateway(过滤器)
  3. 线索二叉树(基于链表存储树结点)
  4. 什么时候考虑使用神经网络
  5. 关于 SQL Server Analysis Services
  6. NLP(新闻文本分类)——基于机器学习的文本分类
  7. python的本地包下载地址
  8. 打印工资条怎么做到每个人都有表头明细_抖音百万点赞!2018年最火的5个Excel骚操作,你都会吗?...
  9. 抄答案就是了,两套详细的设计方案,解决头疼的支付掉单问题
  10. html中meta的设置
  11. 飞控中的一些知识点总结
  12. 网络安全知识竞赛选择题(1-30题)
  13. 成功的条件:高人指点、贵人相助、小人监督、个人奋斗
  14. android 组件 excel,Android中利用jxl组件来操作excel
  15. php做网站需要注意什么,浅谈新手做网站应该注意的问题
  16. 索骥馆-OFFICE系列之《EXCEL数据分析之道:让你的数据更有说服力》扫描版[PDF]
  17. 国外主机注册域名有什么需要注意的吗?
  18. github服务器在美国吗_GitHub上的政府布道者介绍美国开放技术
  19. 视频教程-爬虫微课5小时 Python学习路线-Python
  20. mysql-connector-java各版本直接下载

热门文章

  1. 闲来无事,就把lnmp的php升级到php-5.2.17最新稳定版本
  2. 有助于获得优质流量的免费SEO关键词工具
  3. Gamma分布和逆Gamma分布
  4. Linux——k8s命令别名修改
  5. DDL 创建与查询数据库
  6. 窗体案例:注册 登陆 主界面 c# 1613533126
  7. 1218 图片对齐模式
  8. 吃货阶段03 需求 实现我要下单的功能 0927
  9. 随机数的生成 java
  10. 常用转义符的使用 java 0133