位置: IT常识 - 正文

async/await详解(async/await原理)

编辑:rootadmin
async/await详解

推荐整理分享async/await详解(async/await原理),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:async await的作用,async await的理解,async await详解,async-await,async await的作用,async await的作用,async await详解,async-await,内容如对您有帮助,希望把文章链接给更多的朋友!

🐱个人主页:不叫猫先生 🙋‍♂️作者简介:专注于前端领域各种技术,热衷分享,期待你的关注。 💫系列专栏:vue3从入门到精通 📝个人签名:不破不立

🍬本文目录🥙一、简介🥪二、async🌮三、await🍔四、案例🥪附:直接量/字面量🥙一、简介

async/await是ES20717引入的,主要是简化Promise调用操作,实现了以异步操作像同步的方式去执行,async外部是异步执行的,同步是await的作用。

🥪二、async

async,英文意思是异步,当函数(包括函数语句、函数表达式、Lambda表达式)前有async关键字的时候,并且该函数有返回值,函数执行成功,那么该函数就会调用Promise.resove()并隐式的返回一个Promise对象;如果函数执行失败就会调用Promise.reject()并返回一个Promise对象。

async/await详解(async/await原理)

Promise.resolve(x) 可以看作是 new Promise(resolve => resolve(x)) ,可将字面量对象或其他对象快速封装成 Promise 实例

async函数中如果有异步操作会进行等待,但是async函数本身会马上返回,不会阻塞当前线程。async函数被调用不会阻塞界面渲染,内部由await关键字修饰异步过程,会阻塞等待异步任务的完成再返回。如果在函数中return一个直接量,async会把这个直接量通过Promise.resolve(直接量) 封装成 Promise 对象 ,如果没有返回值,相当于返回了Promise.resolve(undefined)。通过Promise回调得到async函数的返回值 ,通过Promise回调得到async函数的返回值,因为该函数返回的是Promise对象async func(){ return "a"}console.log(func())func().then(res=>{ console.log(res) //通过回掉获取到 a }.catch(err=>{ }))

func()的返回值如下,由此可见返回的是一个Promise对象。

🌮三、await使用await时,一定要配合async使用 ,这样才能使异步代码同步化,await英文为等待,意思就是等待await后面的函数(该函数返回的是Promise对象)执行完之后,在之后后面的代码。await后面也可以跟同步代码 ,这样做的话意义不大,增加了系统处理逻辑,系统会自动将其转化成一个Promsie对象。比如:const a = await '1';const a = await Promise.resolve('1');//跟上面效果效果相同//await后跟同步代码,不如不使用await,增加了代码逻辑,没有意义const a = '1';

await在等返回值,后面可以是字面量或者函数表达式。如果表达式的运算结果不是Promise对象,那么该结果就是await等的值; 如果await后是一个Promise对象,那么就会阻塞后面代码的运行 。但是async函数的调用并不会阻塞,它内部所有的阻塞都封装在Promise对象中异步执行。

await只处理resolve(data)时的数据,不处理reject(error) ,当异步函数体内出错的时候,怎么捕获到错误信息呢?

可以让await后的函数通过catch获取通过最外面的func函数的catch获取func函数体内使用try…catch…,然后从catch获取, try…catch可获取 async 函数内,任意 await 的错误,其中一个被拒绝,便会暂停,返回错误信息。async function func(){ const a = await asyncFunc();}asyncFunc().then().catch()async function func(){ const a = await asyncFunc();}func().then().catch()async function func(){ try(){ const a = await asyncFunc(); }catch(error){ }}🍔四、案例async function func(){ console.log('a') const c = await 'c' console.log(c) return 'd'}func().then(res=>console.log(res))console.log('b')

输出: 先输出a后输出b,说明async函数执行后会立即返回,不阻塞线程。

🥪附:直接量/字面量

文中提到了字面量,博文在这里做下介绍。 字面量又称之为直接量,代码中固定值的表示方法,程序中直接使用的数据,没进行过封装。可分为字符串字面量(string literal)、数组字面量(array literal)、对象字面量(object literal),函数字面量(function literal)。 一般除去函数表达式,在给变量赋值时,可以理解为=号右边的数据 。

var a = "1";var b = [1];var c = {};var d =function (){} // function() 为匿名函数

注意:函数字面量一般为匿名函数,但是语法也支持定义函数名。

var d =function func(){}
本文链接地址:https://www.jiuchutong.com/zhishi/293055.html 转载请保留说明!

上一篇:【今日清明】( © yangphoto )(今日清明节的下一句是什么)

下一篇:波白克岛的小尖塔岩石,英格兰多塞特 (© James Osmond/Alamy)

  • 上海公交卡怎么开通电子上海公交卡(上海公交卡怎么买)

    上海公交卡怎么开通电子上海公交卡(上海公交卡怎么买)

  • 支付宝查询社保缴费记录怎么查(支付宝查询社保显示未查询到个人编号信息)

    支付宝查询社保缴费记录怎么查(支付宝查询社保显示未查询到个人编号信息)

  • 支付宝共同账户怎么开(夫妻支付宝共同账户)

    支付宝共同账户怎么开(夫妻支付宝共同账户)

  • ipad序列号怎么查生产日期(ipad序列号怎么查询是不是正品)

    ipad序列号怎么查生产日期(ipad序列号怎么查询是不是正品)

  • 不能在任务栏内进行的操作是(不能在任务栏内搜索文件)

    不能在任务栏内进行的操作是(不能在任务栏内搜索文件)

  • 快手小黄车必须交保证金吗(快手小黄车必须有营业执照吗)

    快手小黄车必须交保证金吗(快手小黄车必须有营业执照吗)

  • 小米9最高支持多少w(小米9最高支持多少瓦快充)

    小米9最高支持多少w(小米9最高支持多少瓦快充)

  • 微信解除实名认证还能用吗(微信解除实名认证后银行卡会解绑吗)

    微信解除实名认证还能用吗(微信解除实名认证后银行卡会解绑吗)

  • p40pro充电器多少w(vivox70充电器多少w)

    p40pro充电器多少w(vivox70充电器多少w)

  • 2个8g内存条和一个16g的有区别么(内存条两个8g)

    2个8g内存条和一个16g的有区别么(内存条两个8g)

  • oppo高性能模式有什么用(OPPO高性能模式在哪里)

    oppo高性能模式有什么用(OPPO高性能模式在哪里)

  • 苹果id可以改名字吗(苹果怎么更改id)

    苹果id可以改名字吗(苹果怎么更改id)

  • iphone11突然黑屏怎么按都没反应(iphone11突然黑屏无法打开了)

    iphone11突然黑屏怎么按都没反应(iphone11突然黑屏无法打开了)

  • 苹果11首发时间(苹果11首发价是多少)

    苹果11首发时间(苹果11首发价是多少)

  • ipad能用余额宝吗(ipad上可以用支付宝吗)

    ipad能用余额宝吗(ipad上可以用支付宝吗)

  • 主板bios恢复出厂设置(主板bios恢复出厂默认设置方法)

    主板bios恢复出厂设置(主板bios恢复出厂默认设置方法)

  • 为啥打开支付宝网络出错(为啥打开支付宝会闪退)

    为啥打开支付宝网络出错(为啥打开支付宝会闪退)

  • 苹果无线耳机可以连安卓吗(苹果无线耳机可以k歌吗)

    苹果无线耳机可以连安卓吗(苹果无线耳机可以k歌吗)

  • iphonexs是几核(苹果xs是什么处理器几核的)

    iphonexs是几核(苹果xs是什么处理器几核的)

  • 苹果xr主副卡在哪设置(苹果xr手机副卡功能消失)

    苹果xr主副卡在哪设置(苹果xr手机副卡功能消失)

  • 丐版显卡什么意思(啥叫丐版显卡)

    丐版显卡什么意思(啥叫丐版显卡)

  • 显示器节电模式怎么取消(显示器节电模式黑屏怎么解除)

    显示器节电模式怎么取消(显示器节电模式黑屏怎么解除)

  • 台湾人用微信吗(台湾人用微信吗a)

    台湾人用微信吗(台湾人用微信吗a)

  • oppoa9是什么型号(oppo a9是什么型号?)

    oppoa9是什么型号(oppo a9是什么型号?)

  • 失控发票一定要补税吗
  • 企业增资会计处理流程
  • 已经作为损失的资产以后纳税年度收回的会计处理
  • 钱收多了退回去怎么说好
  • 新税法讲课费如何代缴个税
  • 库存现金存入银行怎么记账
  • 单位购买小汽车一次性进成本报表怎么填写?
  • 小规模纳税人出售使用过固定资产
  • 水利建设基金有优惠政策吗
  • 公司成立多久费用可进开办费
  • 公司合作建房什么意思
  • 酒店会计账务处理及税务申报
  • 物业公司安装监控
  • 离职补偿金的税率
  • 收到赞助费要交税吗
  • 电子商务出来干嘛
  • 收到退回所得税怎么做帐
  • 医疗废物处置费是什么意思
  • linux 分享文件
  • mac怎么不能升级系统
  • fs是什么文件
  • win7纯净版系统之家
  • 木质家具出口
  • 小企业的费用包括生产成本吗
  • 企业租赁房屋怎么开票
  • 老生常谈含义
  • 财行〔2019〕11号代扣代缴手续费的解读
  • 增值税代扣代缴税率是多少
  • 预提借款税费会减少吗
  • 差旅费住宿费专票抵扣联贴在哪里
  • 汇兑损益计入什么科目
  • ChatGPT 被大面积封号,到底发生什么了?
  • 开源ei
  • yolov5加入注意力机制后网络后进行剪枝
  • php公众号开发框架
  • 可供出售金融资产新准则叫什么
  • etc电子发票需要多久才能开
  • 第三方车行
  • 百度ai修复照片
  • 代销货物如何进账
  • 小规模纳税人要报个人所得税吗
  • 建筑劳务公司做账表格
  • 硬盘录像机开发票属于哪一类
  • 个人所得税手续费返还账务处理
  • 哪些增值税可以免税
  • 账面价值与计税基础的区别和联系
  • 平行结转分步法各步骤的费用
  • 存货盘亏有哪些情况
  • 利息收入缴纳税率怎么算
  • 事业单位公务员考试条件
  • 固定资产折旧账务处理例题
  • 搬迁所得
  • 产品出库检验报告单格式
  • 股东投资设备入帐与购买设备入帐的区别
  • php中常用的几个字符
  • 非常详细的魔方公式图解
  • sql server如何打开mdf格式文件
  • windows hellopin是什么意思
  • win10系统怎么看驱动
  • 教你怎么制作麻雀胶
  • linux修改ipv6地址
  • linux怎么下载安装腾讯Tim?
  • nginx实现负载均衡的流程
  • win10一年更新一次
  • javascript基于什么的语言
  • 关于shell的说法,不正确的是
  • css如何实现
  • Unity通过图片生成3D模型
  • div的class有空格
  • android toast位置
  • linux echo echo
  • jquery设置边框
  • ubuntu下安装win10
  • jquery选项卡
  • adb查看ip地址
  • Android开发使用的官方IDE是
  • 稽查局和税务局哪个好发展
  • 国际税务局邮箱是多少
  • 签订税务三方协议
  • 税务筹划前景
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设