来聊一聊window.fetch

来聊一聊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.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值