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