位置: 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)

  • 个税手续费返还会计分录
  • 非营利组织免税收入
  • 财政部监制章可以报销吗
  • 最新增值税申报表及附表下载
  • 附加税减半征收会计分录
  • 代账公司需要做报表吗
  • 免费赠送货物出租合同
  • 甲方代扣水电费怎么做账
  • 哪些单位和个人可构成全宗
  • 企业租给企业房产税税率
  • 营业外支出企业所得税怎么填
  • 房地产开发企业会计科目
  • 进出口贸易中押金怎么算
  • 固定资产赔偿制度
  • 已认证的发票对账怎么办
  • 红字发票勾选平台里有吗
  • 蔬菜免税会计分录怎么做
  • 企业所得税是当期收入吗
  • 开土地租赁发票需要交哪些税费
  • 验车费计入什么科目
  • 采购与付款内部控制开题报告
  • 微型小型车
  • 营业范围是销售范围吗
  • 忘记电脑开机密码怎么打开电脑
  • 固定资产出租需交什么税
  • uniapp怎么运行到手机模拟器
  • 个人出售二手房要交增值税吗
  • php测试mysql 数据库连接
  • 罗卡购物村
  • 现金流量表中如何考虑折旧费
  • phpunit
  • 演员片酬要分给经纪公司吗
  • 出口信用保险补贴是否不征税收入
  • 分公司增值税可以放总公司一起缴纳吗
  • 合伙结算转借款
  • ps像素分辨率什么意思
  • 资产负债表的货币资金怎么算
  • 自产和外购用于赠送
  • 合并报表长投和股本抵消后资产负债表怎么处理
  • 代扣代缴增值税如何申报抵扣
  • 销售收入发生变动的影响
  • 经营过程中借股怎么处理
  • 接受捐赠的材料计入什么科目
  • 一般纳税人季度所得税怎么计算
  • 进货没开票销售开票了
  • 固定资产正常报废与非正常报废的会计处理基本相同
  • 收到运输服务发票会计分录
  • 买两个能退一个吗
  • 哪些凭证是有效凭证
  • 预支报销怎么做账
  • 原材料采用实际成本法,在会计核算上应设置的账户是
  • 个体户做账流程新手必看
  • 劳务公司开出发票没有收到钱,怎么做成本
  • Python MySQL进行数据库表变更和查询
  • win7系统浏览器怎么设置
  • win8.1配置要求
  • xp怎么删除多余的操作系统
  • linux系统设置ntp同步
  • 怎么把u盘两个盘合并到一起
  • 虚拟机安装苹果电脑
  • elccest.exe是间谍广告程序吗 elccest进程有什么作用
  • windows8自动开机
  • xp系统1
  • os x10.10.4beta6下载地址 os x10.10.4beta6官方下载网址
  • 苹果服务器操作系统
  • 微软官方解决升级问题
  • Win10打开淘宝https被划上红色斜杠的快速解决办法
  • 如何把网址设为常用网址
  • win8.1系统如何升级到win11
  • 浅谈一下新冠的好处
  • perl语言基本命令
  • python多线程代码
  • 怎么查看u盘有没有传输过数据
  • jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
  • linux中tar
  • js访问thymeleaf值
  • 税务局稽查科有什么处理企业的办法
  • 沈阳特慢病待遇
  • 投资损失属于所得税吗
  • 接受虚开增值税普票如何补救
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设