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

VUE 开发——AJAX学习(三)

一、async函数和await

async和await关键字让我们可以用一种更简洁的方式写出基于Promise的异步行为,而无需刻意地链式调用Promise

async写在函数声明的前面;在async函数内,使用await关键字,获取Promise对象“成功状态”结果值

 <script>//注意:await必须用在async修饰的函数内(await会阻止“异步函数内”代码继续执行,原地等待结果)//1.定义一个async修饰函数async function getData() {//2.await等待Promise对象成功的结果const pObj = await axios({url:'http://hmajax.itheima.net/api/province'})const pname = pObj.data.list[0]}getData()</script>

捕获错误

使用try……catch语句:标记要尝试的语句块,并指定一个出现异常时抛出的响应

<script>async function getData() {//1.try包装可能产生错误的代码try {const pObj = await axios({url:'http://hmajax.itheima.net/api/province'})const pname = pObj.data.list[0]} catch(error) {//2.接着调用catch块,接收错误信息//dir可以看到错误信息console.dir(error)}}getData()
</script>

二、事件循环(EventLoop)

 概念:事件循环负责执行代码、收集和处理事件以及执行队列中的子任务。

定义:执行代码和收集异步任务的模型,在调用栈空闲,反复调用任务队列里回调函数的执行机制

三、宏任务与微任务

异步任务分为:

  • 宏任务:由浏览器环境执行的异步代码
  • 微任务:由JS引擎环境执行的异步代码
任务(代码)执行所在环境
JS脚本执行事件(script)浏览器
setTimeout/setInterval浏览器
AJAX请求完成事件浏览器
用户交互事件等浏览器
Promise对象.then()JS引擎

先执行同步代码,再是微任务,最后是宏任务

四、Promise.all静态方法

概念:合并多个Promise对象,等待所有同时完成完成(或某一个失败),做后续逻辑

 

    <script>/*** 掌握Promise的all方法作用和使用场景*///1.得到Promise对象const bjPromise = axios({url: '',params: { city: '110100'}})const shPromise = axios({url: '',params: { city: '310100'}})const gzPromise = axios({url: '',params: { city: '440100'}})const szPromise = axios({url: '',params: { city: '440300'}})//2.使用Promise.all,合并多个Promise对象const p = Promise.all([bjPromise,shPromise,gzPromise,szPromise])p.then(result => {console.log(result)}).catch(error => {console.dir(error)})</script>

 

 

 

 

http://www.lryc.cn/news/450440.html

相关文章:

  • C++杂项
  • Gelatinous Cube Sphere - Bonus Files 2 - Atavism
  • 锐捷—NAT地址映射+IPsec隧道
  • index.html 调用 ajax
  • uniapp学习(003-1 vue3学习 Part.1)
  • 计算机毕业设计 基于深度学习的短视频内容理解与推荐系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档
  • JavaScript网页设计案例深度解析:从理论到实践
  • spark-sql建表数据同步到hive
  • Django上下文处理器
  • 旭升集团携手纷享销客,构建全方位客户关系管理平台
  • uniapp 知识点
  • 慢病中医药膳养生食疗管理微信小程序、基于微信小程序的慢病中医药膳养生食疗管理系统设计与实现、中医药膳养生食疗管理微信小程序的开发与应用(源码+文档+定制)
  • 解决 Android WebView 无法加载 H5 页面常见问题的实用指南
  • Ollama本地部署大模型及应用
  • 读代码UNET
  • 【java】前端RSA加密后端解密
  • 机器学习 | Scikit Learn中的普通最小二乘法和岭回归
  • 代码随想录冲冲冲 Day60 图论Part11
  • golang web笔记-1.创建Web Server和Handler请求
  • 【Python】Copier:高效的项目模板化工具
  • Spring系列 BeanPostProcessor
  • Qualitor processVariavel.php 未授权命令注入漏洞复现(CVE-2023-47253)
  • SpringBoot的概述与搭建
  • 视频集成与融合项目中需要视频编码,但是分辨率不兼容怎么办?
  • kafka 换盘重平衡副本 操作流程
  • vue3.0 + element plus 全局自定义指令:select滚动分页
  • HarmonyOS/OpenHarmony 离线加载web资源,并实现web资源更新
  • 【Spark 实战】基于spark3.4.2+iceberg1.6.1搭建本地调试环境
  • TCP连接建立中不携带数据的报文段为何不消耗序号解析
  • JS设计模式之状态模式:优雅地管理应用中产生的不同状态