fetch

作者: 简栋梁 | 来源:发表于2019-12-04 14:55 被阅读0次

    特点

    • 现代浏览器支持(非IE)
    • 语法简洁,更加语义化
    • 基于标准Promise实现,支持async/await
    • 同构方便,使用isomorphic-fetch
    • 更加底层,提供的API丰富(request, response)
    • 与Ajax不同的是,脱离了XHR,它的API不是事件机制,而采用Promise方式处理
    • 在默认情况下 fetch不会接受或者发送cookies
    • fetch()返回的promise将不会拒绝http的错误状态,即使响应是一个HTTP 404或者500
    • 尽管是原生,但是不封装,却不能满足使用要求

    缺点

    封装后,需要解决的问题

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

    总结

    axios既提供了并发的封装,也没有fetch的各种问题,而且体积也较小,当之无愧现在最应该选用的请求的方式。

    文档

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

    相关文章

      网友评论

          本文标题:fetch

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