axios和fetch区别

fetch没有超时处理,

const controller = new AbortController();

const options = {
  method: "POST",
  signal: controller.signal,
  body: JSON.stringify({
    firstName: "David",
    lastName: "Pollock",
  }),
}
const promise = fetch("http://example.com/", options)
const timeoutId = setTimeout(() => controller.abort(), 4000);

Fetch提供的转化API有下面几种:

arrayBuffer()

blob()

json()

text()

formData()

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

  

 

posted @ 2022-03-05 13:44  国服第一李师师  阅读(93)  评论(0编辑  收藏  举报