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

async await执行顺序

async await执行顺序

async/await 是用于编写异步代码的语法糖,它允许你以类似于同步代码的方式写异步操作。async 关键字声明的函数会返回一个 Promise,而 await 关键字用于等待一个 Promise 完成。

执行顺序如下:

  1. 调用 async 函数。

  2. 函数会继续执行,遇到 await 时,控制权会交回给调用者。

  3. 等待的表达式(通常是一个返回 Promise 的表达式)开始执行。

  4. 一旦 Promise 解决(fulfilled),函数会从暂停的地方恢复,继续执行后续的操作。

下面是一个简单的例子:

 
 

async function firstAsync() {

console.log('First async');

return 'First result';

}

async function secondAsync() {

console.log('Second async');

return 'Second result';

}

async function asyncFunction() {

const firstResult = await firstAsync();

console.log(firstResult);

const secondResult = await secondAsync();

console.log(secondResult);

}

asyncFunction();

执行顺序如下:

  1. 调用 asyncFunction 函数。

  2. 首先执行 firstAsync,打印出 "First async"。

  3. 遇到 await firstAsync(),控制权交回给 asyncFunction 的调用者。

  4. 执行 secondAsync,打印出 "Second async"。

  5. firstAsync 的 Promise 解决,继续执行 console.log(firstResult),打印出 "First result"。

  6. 遇到 await secondAsync(),控制权再次交回给 asyncFunction 的调用者。

  7. secondAsync 的 Promise 解决,继续执行 console.log(secondResult),打印出 "Second result"。

综上所述,async/await 的执行顺序是按照函数中的顺序执行的,每遇到 await 关键字就会暂停当前函数的执行,等待 Promise 完成后再恢复执行。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 11周年 | 初心不改,焕新前行,奔赴下一个10年!
  • Unity Debug时出现请选择unity实例
  • 【软考】计算机系统硬件基本组成
  • Axure大屏可视化模板:跨领域数据分析平台原型案例
  • 使用docker创建zabbix服务器
  • 出现conda不是内部或外部命令,也不是可运行的程序或批处理文件。的解决办法
  • 【GitLab】安装和使用
  • 【MYSQL】深入了解 MySQL 事务、隔离级别与高阶函数
  • 前端开发之装饰器模式
  • 关于 SQL 的 JOIN 操作
  • chsharp文件如何查找在unity中使用的 位置?
  • 算法打卡:第十一章 图论part01
  • C#的数据类型转换
  • 电商API的创新应用与高效数据采集策略实践
  • Python用TOPSIS熵权法重构粮食系统及期刊指标权重多属性决策MCDM研究|附数据代码...
  • -------------------- 第二讲-------- 第一节------在此给出链表的基本操作
  • 【Amaple教程】5. 插件
  • 【EOS】Cleos基础
  • CSS3 变换
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • Git初体验
  • Git同步原始仓库到Fork仓库中
  • HTML-表单
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Javascript Math对象和Date对象常用方法详解
  • magento2项目上线注意事项
  • nfs客户端进程变D,延伸linux的lock
  • Nodejs和JavaWeb协助开发
  • Protobuf3语言指南
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Traffic-Sign Detection and Classification in the Wild 论文笔记
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 嵌入式文件系统
  • 让你的分享飞起来——极光推出社会化分享组件
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 思考 CSS 架构
  • 微信小程序开发问题汇总
  • 线性表及其算法(java实现)
  • 用简单代码看卷积组块发展
  • Nginx实现动静分离
  • puppet连载22:define用法
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​iOS实时查看App运行日志
  • #1014 : Trie树
  • #我与Java虚拟机的故事#连载08:书读百遍其义自见
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (42)STM32——LCD显示屏实验笔记
  • (k8s)Kubernetes 从0到1容器编排之旅
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (附源码)ssm基于jsp高校选课系统 毕业设计 291627
  • (篇九)MySQL常用内置函数
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (十)Flink Table API 和 SQL 基本概念
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置