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