百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程网 > 正文

跟 PronHub 学 Web前端!更好的 fetch 请求

yuyutoo 2024-10-15 16:51 4 浏览 0 评论

PronHub Web 前端技术分享

跟P站学 Web 前端!画中画技术实现

跟P站学 Web 前端!fetch 获取下载进度

跟P站学 Web 前端!使用 picture 标签展示图片

跟P站学 Web 前端!如何知道广告被 ADBlock 拦截

前文提到:

P站认为 Fetch 不能跟踪下载进度,也没有提供拦截请求的方法,所以希望 Fetch 这个 API 能够改进。

经过文章讨论后,我们知道 fetch 是可以获取下载进度。但确实如P站所说,这个 Web API 有很大改善的空间。

文本将讨论 fetch 的相关细节,希望大家阅读后,能更加了解 fetch。包括:

  • fetch 的易用性
  • fetch 的使用优化
  • fetch 的缺陷

fetch 的易用性

很多朋友会将 fetch 和 axios 进行比较,得出 fetch 仍然不够好用的结论。

但我认为,如果比较易用性,fetch 应该对比的是基于XHR(XMLHttpRequest)的 ajax。

上面代码可以看出,fetch 比原生 ajax 优雅不少。

如果拿 fetch 和 axios 作对比,无异于拿原生 ajax 和 axios 对比一样。未封装的底层 API 和封装好的包,在易用性上没有对比可言。

fetch 使用优化

在项目上,经常会对异常情况进行统一处理。

fetch 是基于 Promise,而它在网络、服务器出现错误使 reject,而对正常返回的请求,无论其状态码是 404 或 200,均会执行 resolve 的逻辑。

但实际项目上,我们一般对网络错误、服务器错误、后台找不到资源报 404、权限不足报 500 等,都执行同一种处理逻辑。

所以我们需要对 fetch 进行改造。

优化后的 fetch 流程,更加符合业务逻辑。

fetch 的缺陷

fetch 虽然作为“新出”的 API,但是却没得到开发者的普遍认同,原因有几点:

  1. 仅靠偏底层的原生 fetch,在易用性上,是无法和 axios 抗衡。
  2. fetch 的兼容性没 XHR 好。
  3. fetch 作为“新出”的 Web API,但是它并不是 XHR 的超集,部分 XHR 能提供的功能,例如跟踪上传进度,fetch 并不具备。

特别是第三点制约了 fetch。易用性,语法简单等都能通过封装完善,但是功能上的缺陷就难以修补。

fetch 的优势

虽然 fetch 的弊端不少,但是在一些场景下,还是体现出它的价值。

例如在我使用的代码转图片插件,它存在截图功能。这时候 fetch 配合 Clipboard API,就能不引入第三方包优雅地实现图片的复制。


结语

总的来说,实际项目 axios 更加适合,毕竟它所基于的 XHR 功能齐全,兼容性好,而且它还结合 Promise 的特点,同时解决了回调地狱等问题。

但 fetch 不需要引入第三方包、语法简单优雅的优点,在某些场景非常适合。

由于 fetch 和 Promise 密切相关,所以在面试中出现的频率非常高,是必须掌握的知识点。

你的点赞转发,是我创作的动力。欢迎评论区讨论,留言必回。

相关推荐

ETCD 故障恢复(etc常见故障)

概述Kubernetes集群外部ETCD节点故障,导致kube-apiserver无法启动。...

在Ubuntu 16.04 LTS服务器上安装FreeRADIUS和Daloradius的方法

FreeRADIUS为AAARadiusLinux下开源解决方案,DaloRadius为图形化web管理工具。...

如何排查服务器被黑客入侵的迹象(黑客 抓取服务器数据)

---排查服务器是否被黑客入侵需要系统性地检查多个关键点,以下是一份详细的排查指南,包含具体命令、工具和应对策略:---###**一、快速初步检查**####1.**检查异常登录记录**...

使用 Fail Ban 日志分析 SSH 攻击行为

通过分析`fail2ban`日志可以识别和应对SSH暴力破解等攻击行为。以下是详细的操作流程和关键分析方法:---###**一、Fail2ban日志位置**Fail2ban的日志路径因系统配置...

《5 个实用技巧,提升你的服务器安全性,避免被黑客盯上!》

服务器的安全性至关重要,特别是在如今网络攻击频繁的情况下。如果你的服务器存在漏洞,黑客可能会利用这些漏洞进行攻击,甚至窃取数据。今天我们就来聊聊5个实用技巧,帮助你提升服务器的安全性,让你的系统更...

聊聊Spring AI Alibaba的YuQueDocumentReader

序本文主要研究一下SpringAIAlibaba的YuQueDocumentReaderYuQueDocumentReader...

Mac Docker环境,利用Canal实现MySQL同步ES

Canal的使用使用docker环境安装mysql、canal、elasticsearch,基于binlog利用canal实现mysql的数据同步到elasticsearch中,并在springboo...

RustDesk:开源远程控制工具的技术架构与全场景部署实战

一、开源远程控制领域的革新者1.1行业痛点与解决方案...

长安汽车一代CS75Plus2020款安装高德地图7.5

不用破解原车机,一代CS75Plus2020款,安装车机版高德地图7.5,有红绿灯读秒!废话不多讲,安装步骤如下:一、在拨号状态输入:在电话拨号界面,输入:*#518200#*(进入安卓设置界面,...

Zookeeper使用详解之常见操作篇(zookeeper ui)

一、Zookeeper的数据结构对于ZooKeeper而言,其存储结构类似于文件系统,也是一个树形目录服务,并通过Key-Value键值对的形式进行数据存储。其中,Key由斜线间隔的路径元素构成。对...

zk源码—4.会话的实现原理一(会话层的基本功能是什么)

大纲1.创建会话...

Zookeeper 可观测性最佳实践(zookeeper能够确保)

Zookeeper介绍ZooKeeper是一个开源的分布式协调服务,用于管理和协调分布式系统中的节点。它提供了一种高效、可靠的方式来解决分布式系统中的常见问题,如数据同步、配置管理、命名服务和集群...

服务器密码错误被锁定怎么解决(服务器密码错几次锁)

#服务器密码错误被锁定解决方案当服务器因多次密码错误导致账户被锁定时,可以按照以下步骤进行排查和解决:##一、确认锁定状态###1.检查账户锁定状态(Linux)```bash#查看账户锁定...

zk基础—4.zk实现分布式功能(分布式zk的使用)

大纲1.zk实现数据发布订阅...

《死神魂魄觉醒》卡死问题终极解决方案:从原理到实战的深度解析

在《死神魂魄觉醒》的斩魄刀交锋中,游戏卡死犹如突现的虚圈屏障,阻断玩家与尸魂界的连接。本文将从技术架构、解决方案、预防策略三个维度,深度剖析卡死问题的成因与应对之策,助力玩家突破次元壁障,畅享灵魂共鸣...

取消回复欢迎 发表评论: