如题,XMLHttpRequest 可以用 promis 包装为异步并提供更多的功能(取消请求、进度条),但是普通请求中 fetch 比 XMLHttpRequest 更简单,请问该如何选择呢?
![]() | 1 ashong 2024-01-28 17:18:10 +08:00 via iPhone 不追求古早浏览器兼容性就用 fetch 吧 |
2 lalalaqwer 2024-01-28 17:20:03 +08:00 随便吧,反正很多时候都要自己再包装一个相关的请求函数的 |
![]() | 3 fengyj 2024-01-28 17:25:22 +08:00 |
![]() | 4 ysc3839 2024-01-28 17:44:57 +08:00 via Android fetch 也能取消吧?进度的话好像也是有流式读取的接口,也可以实现。 |
![]() | 5 codehz 2024-01-28 17:52:07 +08:00 via iPhone fetch 可以用 abort controller 取消,上传进度比较麻烦,要自己拼接一个 readable stream |
![]() | /td> | 6 Leon6868 OP |
7 humbass 2024-01-28 20:31:24 +08:00 涉及到上传进度确实是一个问题,我现在是 nodejs 后端回传进度。 |
![]() | 8 wakarimasen 2024-01-28 20:45:55 +08:00 via Android 难道实际开发不都是用 axios 或者 xx query 吗... |
![]() | 9 Dragonphy 2024-01-28 21:03:15 +08:00 ![]() |
10 Seanfuck 2024-01-28 21:40:11 +08:00 如果 fetch 需要包装起来用的话,那不如用 XMLHttpRequest |
![]() | 11 changdy 2024-01-28 22:21:33 +08:00 几年不玩前端了..记得有人吐槽过 fetch 并不原生支持超时断开之类的 |
![]() | 12 zhuangzhuang1988 2024-01-28 22:42:59 +08:00 一直 axios |
![]() | 13 gxm44 2024-01-28 23:26:10 +08:00 axios |
14 jackxx274 2024-01-28 23:41:31 +08:00 感觉现在更多用的是 axios ,进度条我以前用 nprogress 实现过 |
15 JounQin 2024-01-29 00:51:56 +08:00 via Android |
![]() | 16 stimw 2024-01-29 01:23:25 +08:00 fetch 的优点就是原生、简单,没必要包,像楼上说的,真要包不如直接用 axios 。 |
17 cslive 2024-01-29 07:00:29 +08:00 via Android 试试 rxjs |
18 tsai2zeyong 2024-01-29 11:40:55 +08:00 写个测试/玩具啥的,哪个简单/哪个有用用哪个,正儿八经的产品项目还是用三方库比较好。 |
![]() | 19 cleveryun 2024-01-29 13:12:00 +08:00 ![]() axios 实际也是包的 XMLHttpRequest 。 fetch 只是 API 比 XMLHttpRequest 新,原生支持 promise ,并没有啥优势。具体落实到项目里,不管用哪个,都是要包一下的(请求头上携带 token ,无权限时跳登录页等通用逻辑),原生不支持 promise 的也都会 new Promise 处理一下转成 promise ,等于没有区别。 XMLHttpRequest 因为自带的 API 更多一些,其实更好用一些。 |