ES6 Fetch API的基础使用

news/2024/7/10 23:40:48 标签: es6, 前端, ecmascript, Fetch

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.niftyadmin.cn/n/5441406.html

相关文章

NodeJs接入腾讯云存储COS

什么是腾讯云COS 腾讯云的 COS(Cloud Object Storage)是一种对象存储服务,类似于亚马逊的 S3(Simple Storage Service)。COS 提供了存储和管理大规模数据的能力,用户可以通过 COS 存储和检索各种类型的数据…

工程数学-线性代数-第六版-第一章—行列式学习笔记

目录 一、第一章——行列式 1 二阶与三阶行列式 一、二元线性方程组与二阶行列式 二、三阶行列式 2 全排列和对换 一、排列及其逆序数 二、对换 3 n阶行列式的定义 4 行列式的性质 5 行列式按行(列)展开 二、习题一 三、参考书目 一、第一章——行…

手撕算法-二叉搜索树与双向链表

牛客BM30。 描述:https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5?tpId295&tqId23253&ru/exam/oj&qru/ta/format-top101/question-ranking&sourceUrl%2Fexam%2Foj分析:二叉搜索树的中序遍历是递增序列。可以利用…

【自然语言处理】NLP入门(八):1、正则表达式与Python中的实现(8):正则表达式元字符:.、[]、^、$、*、+、?、{m,n}

文章目录 一、前言二、正则表达式与Python中的实现1、字符串构造2、字符串截取3、字符串格式化输出4、字符转义符5、字符串常用函数6、字符串常用方法7、正则表达式1. .:表示除换行符以外的任意字符2. []:指定字符集3. ^ :匹配行首&#xff0…

批量插入集合数据Lists.partition(list, 2000)

批量插入集合数据&#xff08;集合数据量比较大&#xff09;&#xff0c;可以将集合拆分成每次多少条一组&#xff0c;循环插入数据库中。 引入依赖 <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><versio…

Linux:点命令source

相关阅读 Linuxhttps://blog.csdn.net/weixin_45791458/category_12234591.html?spm1001.2014.3001.5482 source命令用于读取一个文件的内容并在当前Shell环境&#xff08;包括交互式Shell或是非交互式Shell&#xff09;执行里面的命令。它被称为点命令是因为命令名source也可…

​LeetCode解法汇总1969. 数组元素的最小非零乘积

目录链接&#xff1a; 力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目&#xff1a; https://github.com/September26/java-algorithms 原题链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 描述&#xff1a; 给你一个正整数 p 。你有一个下标从 1 开…

WebRTC:真正了解 RTP 和 RTCP

介绍 近年来&#xff0c;通过互联网进行实时通信变得越来越流行&#xff0c;而 WebRTC 已成为通过网络实现实时通信的领先技术之一。WebRTC 使用多种协议&#xff0c;包括实时传输协议 (RTP) 和实时控制协议 (RTCP)。 RTP负责通过网络传输音频和视频数据&#xff0c;而RTCP负责…