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

async 与 await

目录

  • 一、async函数
  • 二、await表达式
  • 三、async与await结合


一、async函数

  1. 函数的返回值为promise对象
  2. promise对象的结果由async函数执行的返回值决定
async function main(){
  //1.如果返回的是一个非promise类型的数据,那么返回的就是成功的状态
  // return 521
  //2.如果然会的是一个promise对象
  return new Promise((resolve,reject)=>{
    // 2.1返回的状态由promise对象返回值决定
    resolve('ok')
    // reject('error')
    // 2.2 如果抛出异常
    // throw new Error('error') 结果就是抛出的异常 状态为失败
  })
}
let result = main();
console.log(result);

和then的返回一模一样

二、await表达式

  1. await右侧的表达式一般为promise对象,但也可以是其他的值。
  2. 如果表达式是promise对象,await返回的是promise成功的值
  3. 如果表达式是其他值,直接将此值作为await的返回值

注意:

  1. await必须卸载async函数中,但是async函数中可以没有await
  2. 如果await的promise失败了,就会抛出异常,需要通过try…catch捕获处理
async function main(){
  let p = new Promise((resolve,reject)=>{
    resolve('ok')
  })
  //1.右侧为promise的情况
  let res =await p
  console.log(res)//ok
  //2.右侧为其他类型的数据
  let res2 = await 123
  console.log(res2)//123
}

通过try/catch捕获错误

    async function main() {
      let p = new Promise((resolve, reject) => {
        reject('error')
      })
      try {
        let result = await p
      } catch (e) {
        console.log(e)
      }
    }
    main()

在这里插入图片描述

三、async与await结合

  1. 使用回调函数的方式实现
    在这里插入图片描述
  2. async 与 await
    在这里插入图片描述
    在这里插入图片描述

相关文章:

  • 深入理解【正则化的L1-lasso回归和L2-岭回归】以及相关代码复现
  • Linux内核设计与实现第四章学习笔记
  • <c++> 四、模板初阶
  • 两种编程思维
  • 图书馆管理系统(Java编写,思路及源代码)
  • 算法练习:动态规划(最长公共子串问题)
  • 【lm401】解决malloc动态申请内存时内存不足的问题
  • 【Python】ChineseCalendar包简介
  • 前端八股——JS高级学习
  • 【CSS系列】第二章 · CSS选择器
  • vue尚品汇商城项目-day04【27.分页器静态组件(难点)】
  • JavaScript技术干货第二弹,有需自取!
  • 华为OD机试用java实现 -【关联子串】
  • 走过最长的路是ChatGPT的套路,信过最真的话是Adobe的Firefly
  • 基于蓄电池进行调峰和频率调节研究【超线性增益的联合优化】(Matlab代码实现)
  • [PHP内核探索]PHP中的哈希表
  • gcc介绍及安装
  • JavaScript 一些 DOM 的知识点
  • js数组之filter
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Mac 鼠须管 Rime 输入法 安装五笔输入法 教程
  • PHP的Ev教程三(Periodic watcher)
  • Web Storage相关
  • WinRAR存在严重的安全漏洞影响5亿用户
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 基于HAProxy的高性能缓存服务器nuster
  • 两列自适应布局方案整理
  • 前端相关框架总和
  • 区块链将重新定义世界
  • 数组大概知多少
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​ssh免密码登录设置及问题总结
  • #14vue3生成表单并跳转到外部地址的方式
  • #define、const、typedef的差别
  • #pragma multi_compile #pragma shader_feature
  • $$$$GB2312-80区位编码表$$$$
  • $.proxy和$.extend
  • (1)bark-ml
  • (1)虚拟机的安装与使用,linux系统安装
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (八十八)VFL语言初步 - 实现布局
  • (二)fiber的基本认识
  • (二)Linux——Linux常用指令
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (一)Java算法:二分查找
  • (转)IOS中获取各种文件的目录路径的方法
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .CSS-hover 的解释
  • .NET Framework .NET Core与 .NET 的区别
  • .NET 材料检测系统崩溃分析
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET开发者必备的11款免费工具
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比