ES6 Fetch API的基础使用

XMLHttpRequest 的问题

  1. 所有的功能全部几乎在同一个对象上,容易书写出混乱不易维护的代码

  2. 采用传统的事件驱动模式,无法适配的 Promise Api

Fetch Api 的特点

  1. 并非取代 AJAX,而是对 AJAX 传统 API 的改进

  2. 精细的功能分割:头部信息、请求信息、响应信息等均分布到不同的对象,更利于处理各种复杂的 AJAX 场景

  3. 使用 Promise Api,更利于异步代码的书写

  4. Fetch Api 并非 ES6 的内容,属于 HTML5 新增的 Web Api

  5. 需要掌握网络通信的知识。

参数

该函数有两个参数:

  1. 必填:字符串、请求地址

  2. 选填:对象、请求配置

请求配置对象

  • method:字符串、请求方法、默认值 GET

  • headers:对象、请求头信息

  • body:请求体的内容,必须匹配请求头中的 Content-Type

  • mode:字符串,请求模式

    • cors:默认值,配置为该值,会在请求头中加入 origin 和 referer

    • no-cors:配置为该值,不会在请求头中加入 origin 和 referer,跨域的时候可能会出现问题

    • same-origin:指示请求必须在同一个域中发生,如果请求其他域,则会报错

  • credentials:如何携带凭据(cookie)

    • omit:默认值,不携带 cookie

    • same-origin:请求同源地址时携带 cookie

    • include:请求任何地址都携带 cookie

  • cache:配置缓存模式

    • default:表示 fetch 请求之前将检查下 http 的缓存。

    • no-store:表示 fetch 请求将完全忽略 http 缓存的存在。这意味着请求之前将不再检查下 http 的缓存,拿到响应后,它也不会更新 http 缓存。

    • reload:表示 fetch 请求之前将忽略 http 缓存的存在,但是请求拿到响应后,它将主动更新 http 缓存。

    • force-cache:表示 fetch 请求不顾一切的依赖缓存,即使缓存过期了,它依然从缓存中读取。除非没有任何缓存,那么它将发送一个正常的 request。

    • only-if-cached:表示 fetch 请求不顾一切的依赖缓存,即使缓存过期了,它依然从缓冲中读取。如果没有缓存,它将抛出网络错误(该设置只在 mode 为"same-origin"时有效)

返回值

fetch 函数返回一个 Promise 对象

  • 当收到服务器的返回结果后,Promise 进入 resolved 状态,状态数据为 Response 对象

  • 当网络发生错误(或其他导致无法完成交互的错误)时,Promise 进入 rejected 状态,状态数据为错误信息。

Response 对象

  • ok:boolean,当响应消息吗在 200~299 之间时为 true,其他为 false

  • statu:number,响应的状态码

  • text():用于处理二进制文件格式(比如图片或者电子表格)的 Ajax 响应。它读取文件的原始数据,一旦读取完整个文件,就返回一个被解决为 blob 对象的 Promise。

  • json():用于处理 JSON 格式的 Ajax 的响应。它将 JSON 数据流转换为一个被解决为 JavaScript 对象的 promise。

  • redirect():可以用于重定向到另一个 URL。它会创建一个新的 Promise,以解决来自重定向的 URL 的响应。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/759628.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaScript——BFS结合队列求迷宫最短路径

这里推荐先去看下B站这个老师讲的BFS迷宫问题,只用看前五分钟就能懂用BFS队列实现的原理。[POJ] 3984 迷宫问题 BFS_哔哩哔哩_bilibili 问题描述:由m*n的矩阵构成了一个迷宫, 矩阵中为1的元素表示障碍物,不能走,为0表示…

如何在职场中提升自己的竞争力

随着社会的发展,职场竞争日益激烈。如何在职场中提升自己的竞争力,成为许多职场人士关注的焦点。本文将从以下几个方面为大家提供一些建议。 一、不断学习,提升专业技能 在职场中,专业技能是衡量一个人竞争力的重要标准。要想在职…

软考高级:项目管理-软件质量控制和质量保证概念和例题

作者:明明如月学长, CSDN 博客专家,大厂高级 Java 工程师,《性能优化方法论》作者、《解锁大厂思维:剖析《阿里巴巴Java开发手册》》、《再学经典:《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

让数据在两个buckets之间传输 - Google Storage Transfer Service

在业务场景中, 有时我们不想直接暴露数据存储空间给上游系统, 而需要设置1个landing Path 让上游系统发送数据 如图: 我们只需grant landing bucket 的权限给上游系统, 而上游系统是访问不了storage bucket的保证了数据隔离 但是…

这个小技巧真不错!

大家好,我是前端队长。前端程序员,2023年开始玩副业。玩过AI绘画,公众号爆文项目,累计变现五位数。 今天看到萌萌在陪伴群分享了我公众号次图封面显示不全的问题。 这里我分享设计师萌萌的方法,很简单,但是…

想要在浏览器中访问pdf内容,服务器器该如何配置

1、需要先放置PDF文件: 将你的PDF文件放置在服务器的某个目录下,例如/var/www/html/pdfs/。确保服务器有权限读取这个目录中的文件。 2、配置Nginx: 在Nginx的配置文件中为PDF文件添加一个location块。 server { listen 80; server_name…

为什么HubSpot可以干翻营销和销售副总裁?

本文纯属虚构,作为销售的人,看完惊出一身大汗绝对属于正常。建议您先准备一个大毛巾,等下看完肯定会出汗的。还有,别忘记睡前给自己倒满一杯红酒🍷,今晚会失眠的呢。 1. 为什么是Hubspot? 2. H…

make | ubuntu源码编译指定版本make

下载源码包:Index of /gnu/make # 解压 tar -zxvf cmake-xxx.tar.gzcd cmake-xxx# 编译配置 ./configure ./build.sh# 先用apt安装一个make apt update apt install make# 然后使用系统的make来编译指定版本的make make install# 这时已经生成了可执行程序make # 然…

C# SetWindowPos函数

在C#中,SetWindowPos函数用于设置窗口的位置和大小。 原型: [DllImport("user32.dll", SetLastError true)] [return: MarshalAs(UnmanagedType.Bool)] public static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int …

金融知识分享系列之:KD指标

金融知识分享系列之:KD指标 一、KD指标二、KD指标计算三、KD指标原理四、KD指标应用 一、KD指标 KD信号提供入场的工具 名称:随机震荡指标参数:(9,3,3)组成:K线,D线,20轴&#xff0…

【Linux】传输层协议:TCP/UDP

目录 netstat pidof UDP协议 TCP协议 TCP协议段格式 TCP协议的相关机制 确认应答(ACK)机制 超时重传机制 连接管理机制 服务端状态转换 客户端状态转化 流量控制 流量控制常见问题: 滑动窗口 拥塞控制 延迟应答 面向字节流…

流畅的 Python 第二版(GPT 重译)(九)

第四部分:控制流 第十七章:迭代器、生成器和经典协程 当我在我的程序中看到模式时,我认为这是一个麻烦的迹象。程序的形状应该只反映它需要解决的问题。代码中的任何其他规律性对我来说都是一个迹象,至少对我来说,这表…

(day 14)JavaScript学习笔记(对象2)

概述 这是我的学习笔记,记录了JavaScript的学习过程。在写博客的时候我会尽量详尽的记录每个知识点。如果你完全没接触过JavaScript,那么这一系列的学习笔记可能会对你有所帮助。 今天继续学习对象,主要是this、getters和setters、原型&#…

vulhub中DNS域传送漏洞复现

DNS协议支持使用axfr类型的记录进行区域传送,用来解决主从同步的问题。如果管理员在配置DNS服务器的时候没有限制允许获取记录的来源,将会导致DNS域传送漏洞。 环境搭建 Vulhub使用Bind9来搭建dns服务器,但不代表只有Bind9支持AXFR记录。运行…

Power BI学习(数据可视化)

另一个也可以的工具是:Tableau 还有一个是:神策,主要是用于互联网的app的数据埋点 数据分析的过程: 数据源--数据清洗(power query)-构建指标 新建度量值(power pivot)-可视化&…

构建一个前端智能停车可视化系统

引言 随着城市化进程的加速,停车难问题日益突出。智能停车可视化系统通过实时展示停车场的车位信息,帮助用户快速找到空闲车位,提高停车效率。 目录 引言 一、系统设计 二、代码实现 1. 环境准备 2. 安装依赖 3. 创建停车场组件 4. 集…

能源新动力:移动电站行业洞察报告

在全球能源结构转型和灾害应急需求不断上升的背景下,移动电站作为一种新型的电力供应解决方案,正逐渐成为保障临时供电、支持灾难恢复、以及促进能源普及的关键技术。本报告旨在全面分析移动电站行业的发展现状、技术趋势、市场潜力及面临的挑战&#xf…

python与excel第三节

批量重命名多个工作簿的名称 import os file_path D:\\TEST\\python与excelfile_list os.listdir(file_path)# 给出工作簿名中包含的需要替换的旧关键字和新关键字old_book_name 订单new_book_name 产品print(修改前名称:,file_list)for i in file_list: #…

React—— props校验(非typescript校验类型)

非typescript环境下,当我们在封装组件的时候,接受props时传入的内容,需要做类型检测,那我们可以用props校验进行类型的检查。 props校验允许在创建组件的时候,就约定props的格式、类型等 实现步骤: 导入 …

FDU 2018 | 2. 集合交并

文章目录 1. 题目描述2. 我的尝试1. C容器2. 排序二路归并 1. 题目描述 AcWing 3688 集合交并 输入两个集合,分别求其交集和并集中元素的个数,每个集合中可能存在相同的元素,而最终的交集和并集中应该不存在。 输入格式 第一行输入两个整数 n…