当前位置: 首页 > news >正文

async/await的基本使用以及fetchAPI的部分细节

先看代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head>
<body><button>点击获取图片</button><img src="" alt=""><script>console.log('同步任务1...')async function fn() {console.log('异步函数中的同步任务2...');let response = await fetch('https://dog.ceo/api/breeds/image/random')console.log(JSON.parse(await response.text()))console.log('异步函数中的同步任务3...');}fn()console.log('同步任务4...');</script>
</body>
</html>

async可以加在函数前,这是这个函数就变成了一个异步函数的环境,但是,很重要的一点,异步函数环境中也是可以有同步代码的,await异步操作之前的同步代码执行是不会受到影响的,但是await异步操作之后的同步代码会延迟执行

下面是代码的执行结果,很容易看出看出来异步函数里边的任务3是最后执行的,其他的同步代码没受到影响。下面是代码执行结果

关于fetch请求的细节,fetch请求返回的是一个Promise对象,但是,注意哈,上边的代码使用了await处理了返回的Promise对象,也就是说这里最后实际上的返回值是Promise执行完成后的服务器响应对象,也就是response对象。

拿到这个服务器响应对象之后,调用text()方法,会再次返回一个Promise对象。注意这里很重要,实际上服务器返回的响应对象确实是包含了响应头,状态码等原信息,但是真正的响应内容其实并没有在这个响应对象中,即响应内容此时并不在内存中,此时想要获取真正的响应内容,仍然是一个异步的请求操作,所以调用text方法之后,仍然返回的是一个异步的Promise对象,加上await处理异步后才是真正的字符串响应内容,此时在通过JSON.parse(),将json字符串解析为js能操作的对象

其实response响应对象上也提供有更简单的方法,json()方法,可以不用parse解析,直接得到js对象,await response.json()
第一次学js中的异步和网络请求相关的操作,叙述有点啰嗦,哈哈哈,但这会感觉对这个有点理解了

http://www.dtcms.com/a/434326.html

相关文章:

  • MySQL新学知识(一)
  • 小迪web自用笔记47
  • 前端如何优雅地生成唯一标识?——一份跨环境 UUID 工具函数的封装与实战
  • iBizModel 应用程序(PSSYSAPP)模型体系详解
  • iis 网站 起不来 temp文件夹html网站建设心得体会
  • Ubuntu防火墙端口管理指南
  • Ubuntu离线安装软件包
  • 山东电力建设网站泉州专业建站品牌
  • 微服务项目部署配置文件示例:从开发到生产的完整指南
  • 声卡驱动解决方案(电脑没有声音,麦克风没有声音)win11
  • 哈尔滨快速建站模板如意影院
  • 机器人、具身智能的起步——线性系统理论|【二】状态空间方程的解
  • 【数据结构】字典树
  • Rust Slint 实现控件拖动详细教程
  • 4. Pandas 数据选择、查询与修改
  • React新闻发布系统 角色列表篇
  • 网站常用插件wordpress自定义应用
  • 衡水手机网站建设淮安市盱眙县建设局网站
  • iPhone美区账号登录指南:轻松下载ChatGPT应用
  • AI大模型:(三)1.6 Dify工作流快速搭建数据可视化助手
  • 软件/网站安全需要以及解决方法
  • 做设备推广的网站学做网站用谁的书
  • python 做网站速度网站建设及托管合同
  • Coze源码分析-资源库-编辑工作流-后端源码-数据存储/安全/错误
  • 什么是Java反射机制?
  • 使用Docker安装Neo4j
  • 建立网站的步骤筝晃湖南岚鸿官网深圳专业建设网站哪个公司好
  • 20软件测试需求分析评审
  • SQL 多表查询实用技巧:ON 和 WHERE 的区别速览
  • 网站备案 内容央企八大设计院