XMLHttpRequest 和 Fetch ,该用哪个?

101 天前
 Leon6868

如题,XMLHttpRequest 可以用 promis 包装为异步并提供更多的功能(取消请求、进度条),但是普通请求中 fetch 比 XMLHttpRequest 更简单,请问该如何选择呢?

3103 次点击
所在节点    JavaScript
19 条回复
ashong
101 天前
不追求古早浏览器兼容性就用 fetch 吧
lalalaqwer
101 天前
随便吧,反正很多时候都要自己再包装一个相关的请求函数的
huiyifyj
101 天前
https://caniuse.com/fetch

大部分浏览器 16 年后就支持得差不多了,现在已经是 24 年了
ysc3839
101 天前
fetch 也能取消吧?进度的话好像也是有流式读取的接口,也可以实现。
codehz
101 天前
fetch 可以用 abort controller 取消,上传进度比较麻烦,要自己拼接一个 readable stream
Leon6868
101 天前
@ysc3839 #4
@codehz #5
abort controller 设计挺丑陋的,不如 abort()
humbass
101 天前
涉及到上传进度确实是一个问题,我现在是 nodejs 后端回传进度。
angrylid
101 天前
难道实际开发不都是用 axios 或者 xx query 吗...
Dragonphy
101 天前
Seanfuck
101 天前
如果 fetch 需要包装起来用的话,那不如用 XMLHttpRequest
changdy
101 天前
几年不玩前端了..记得有人吐槽过 fetch 并不原生支持超时断开之类的
zhuangzhuang1988
101 天前
一直 axios
gxm44
101 天前
axios
jackxx274
101 天前
感觉现在更多用的是 axios ,进度条我以前用 nprogress 实现过
JounQin
101 天前
https://github.com/un-ts/x-fetch

刚写的精简 fetch wrapper
stimw
101 天前
fetch 的优点就是原生、简单,没必要包,像楼上说的,真要包不如直接用 axios 。
cslive
100 天前
试试 rxjs
tsai2zeyong
100 天前
写个测试/玩具啥的,哪个简单/哪个有用用哪个,正儿八经的产品项目还是用三方库比较好。
cleveryun
100 天前
axios 实际也是包的 XMLHttpRequest 。

fetch 只是 API 比 XMLHttpRequest 新,原生支持 promise ,并没有啥优势。具体落实到项目里,不管用哪个,都是要包一下的(请求头上携带 token ,无权限时跳登录页等通用逻辑),原生不支持 promise 的也都会 new Promise 处理一下转成 promise ,等于没有区别。

XMLHttpRequest 因为自带的 API 更多一些,其实更好用一些。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1012202

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX