美文网首页
为什么使用fetch

为什么使用fetch

作者: panergongzi | 来源:发表于2020-03-10 10:59 被阅读0次

为什么要使用fetch

1,浏览器原生支持,不需要额外引入别的ajax库。

2,代替以前的XHR,是前端技术的前进方向。

3,可以搭配使用 async/await使用语法更简单。

fetch存在的缺陷

1,一些古董浏览器可能不会支持

2,fetch只对网络请求报错,对400,500都当做成功的请求,需要封装去处理

3,fetch默认不会带cookie,需要添加配置项

4,无法判断请求进行的状态

下面分别给出对于发送请求 fetch,原生ajax,jquery ajax,axios的写法(仅供参考)

1, 方式一 使用原生XHR发送请求

    function XHRAjax(url, type, params) {

        var xhr = new XMLHttpRequest();//创建啊一个XMLHttpRequest()实例

        xhr.onreadystatechange = function () {

            if (xhr.readyState == 4) {

                if ((xhr.status >= 200 && xhr.status < 300) || xhr == 304) {

                    console.log(xhr.responseText)

                } else {

                    console.log("request is fail" + xhr.status)

                }

            }

        }

        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//设置请求头

        xhr.open(type, url, true);

        xhr.send(params);

    }

2,方式二 使用jquery ajax写法

    function JQAjax(url, type, params) {

        $.ajax({

            type: type,

            data: params,

            contentType: 'application/x-www-form-urlencoded',

            url: url,

            success: function (data) {

                console.log(data)

            },

            error: function (err) {

                console.log(err)

            }

        })

    }

3,方式三 使用axios写法

    async function axiosAjax(url, type , params) {

        var re = await axios({

            url: url,

            data: params,

            headers: { 'Content-Type': 'application/x-www-form-urlencoded' },

            method: type

        })   

        return re;

    }

4, 方式四 使用fetch写法

async function fetchAjax(url, type, params) {

        var response = await fetch(url, {

            method: type,

            headers: {

                'Content-Type': 'application/x-www-form-urlencoded'

            },

            body: params

        })

        var re=await response.json;

        return re;

    }

通过对比以上几种写法,原生xhr写法太麻烦,还需自己处理浏览器兼容问题。jquery ajax其实很强大,jquery在以前普及率非常高,但现在已经被mvvc框架替代。axios当前也比较成熟,很多项目都在使用,可以结合async/await一起使用非常方便。使用fetch不需要引入别的ajax库,未来会越来越普及,但是使用过程中可能会遇到很多坑。个人建议,在项目开发尽量使用axios,个人学习上多使用fetch紧跟前端技术前进的步伐。

示例源码地址  https://github.com/panergongzi/ajaxDemo.git

网上也有很多大牛介绍了fetch相关的使用经验,下面贴几篇介绍fetch的文章和学习网站

1,《传统 Ajax 已死,Fetch 永生》,2,《fetch没有你想象的那么美》3,《fetch使用的常见问题及解决方法》

4,https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API/Using_Fetch

相关文章

  • Fetch

    Fetch API使用 Fetch

  • 为什么使用fetch

    为什么要使用fetch 1,浏览器原生支持,不需要额外引入别的ajax库。 2,代替以前的XHR,是前端技术的前进...

  • JS--Fetch API

    fetch() 使用 Fetch Headers() 方法:append() delete() entries()...

  • fetch记录一下子

    1.原生http请求 2.fetch请求 3.上面是封装多得fetch,直接使用的fetch fetch请求对某些...

  • 聊聊fetch

    聊聊fetch fetch的使用 fetch是一个发起异步请求的新api, 在浏览器(有些不支持)中可以直接使用。...

  • 使用 Fetch

    原文链接:https://www.cnblogs.com/libin-1/p/6853677.html 原文链接:...

  • fetch 使用

    安装 为了兼容老版本浏览器,还需要安装 get 基本使用 引入依赖插件 方法的第一个参数是 url 第二个参数是配...

  • 在React-Native中,使用fetch时,cookie问题

    在React-Native中,使用fetch时,cookie问题。 最近在使用fetch时,由于后端返回的请求头里...

  • react-native 0.62 fetch请求上传图片失败

    React-native 0.62 fetch请求上传图片失败 问题描述: Android使用fetch/xhr ...

  • Git 强制覆盖本地文件,解决 pull 失败问题

    pull报错: 解决办法: 使用fetch命令强制更新:$git fetch --all$git reset --...

网友评论

      本文标题:为什么使用fetch

      本文链接:https://www.haomeiwen.com/subject/opepdhtx.html