fe-notes icon indicating copy to clipboard operation
fe-notes copied to clipboard

Ajax 和 Fetch 的区别

Open Inchill opened this issue 3 years ago • 0 comments

  1. Ajax 是理用 XMLHttpRequest 对象来请求数据的,而 Fetch是 window 的一个方法;
  2. Ajax 基于原生的 XHR 开发,XHR 本身的架构不清晰,已经有了 fetch 的替代方案;
  3. Fetch 比 Ajax 有着更好更方便的写法,它的 API 是基于 Promise 实现的,但不使用回调函数,对低版本浏览器不兼容;
  4. Fetch 只对网络请求报错,对 404、500 都当做成功的请求,需要封装去处理;
  5. Fetch 没有办法原生监测请求的进度,而 XHR 可以;
  6. fetch默认不会带cookie,需要添加配置项: fetch(url, {credentials: 'include'});
  7. fetch不支持abort,不支持超时控制,使用setTimeout及Promise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费。

Inchill avatar Aug 11 '22 09:08 Inchill