位置: IT常识 - 正文

ES6+--》熟知JS中的async函数(js es6常用方法)

编辑:rootadmin
ES6+--》熟知JS中的async函数

目录

async函数

await 表达式

async使用形式

async读取文件

async发送AJAX请求

与生成器(Generator)相比


async函数

推荐整理分享ES6+--》熟知JS中的async函数(js es6常用方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js中es6语法,js中es6语法,js的es6新特性,js中es6是什么,js中es6语法,js中es6语法,js中es6语法,js中es6是什么,内容如对您有帮助,希望把文章链接给更多的朋友!

async函数的返回值为 promise 对象,promise对象的结果由async函数执行的返回值决定。async函数能使得异步操作变得更加方便,简而言之就是 Generator 的语法糖。

定义async函数,特点是即便函数内部返回结果不是promise对象,调用函数其最后的返回结果依然是promise对象,代码如下:

如果返回的结果不是 Promise 对象的情况下:

<script> async function fn(){ // 返回的结果是字符串 // return '123' // // 返回的结果是undefined // return; // 返回的结果是抛出一个异常 throw new 'error' } const result = fn() console.log(result);</script>

如果返回的结果是 Promise 对象时,我们正常使用 then 方法即可,如下:

<script> async function fn(){ return new Promise((resolve,reject)=>{ // resolve('成功的数据') reject('失败的数据') }) } const result = fn() // 调用 then 方法 result.then((value)=>{ console.log(value); },(reason)=>{ console.log(reason); // 打印失败的数据 })</script>await 表达式

通过上文的对 async 介绍,感觉其功能有点鸡肋,其实恰恰不是,而是 async 需要搭配 await 一起使用才能达到语法糖的效果。

await的特点:

ES6+--》熟知JS中的async函数(js es6常用方法)

await必须写在 async 函数中

await右侧的表达式一般为 promise 对象

await返回的是 promise 成功的值

await的 promise 失败了,就会抛出异常,需要通过 try...catch捕获处理

说白了:await就相当于 then 方法的第一个回调函数,只返回成功的值,失败的值需要 try...catch来捕获。

async函数内部抛出错误,会导致返回的 Promise 对象变为reject状态。抛出的错误对象会被catch方法回调函数接收到。

<script> const p = new Promise((resolve,reject)=>{ // resolve('用户数据') reject('用户加载数据失败了') }) async function fn(){ // 为防止promise是失败的状态,加上try...catch进行异常捕获 try { // await 返回的结果就是 promise 返回成功的值 let result = await p console.log(result); } catch (error) { console.log(error);//因为是失败的状态,所以打印:用户加载数据失败了 } } fn()</script>

总结:

(1)await命令后面的Promise对象,运行结果可能是rejected,所以最好把await命令放在try...catch代码块中。

(2)如果有多个await命令后面的异步操作,如果不存在继发关系,最好让它们同时触发。

比如:await Promise.all([a(), b()]),这里简单提一下

(3)await命令只能用在async函数之中,如果用在普通函数,就会报错。

(4)(理解一下async的运行原理) async 函数可以保留运行堆栈,普通函数内部运行一个异步任务时,如果异步任务运行结束普通函数可能早就运行完了,异步任务的上下文环境已经消失了,如果异步任务报错,错误堆栈将不包括普通函数;而async函数内部的异步任务运行时,async函数是暂停执行的,所以一旦async函数内部的异步任务运行报错,错误堆栈将包括async函数。

async使用形式// 函数
本文链接地址:https://www.jiuchutong.com/zhishi/299335.html 转载请保留说明!

上一篇:【ChatGPT】AI 发展如此火热,程序员的发展呢?(发ai的英文单词)

下一篇:【简陋Web应用2】人脸检测——基于Flask和PaddleHub

  • 费用的进项税额可以抵扣吗
  • 企业所得税损益结转
  • 所得税费按年缴纳?
  • 固定资产在现金流量表中的体现
  • 预售收入是否可以退税
  • 股东捐赠给企业资金保壳
  • 管理费用多计提了怎么冲
  • 借款存入银行会计分录
  • 领用工程物资的进项税要转出么
  • 税金及附加小于应缴纳所得税是什么原因
  • 注册公司买车划算吗
  • 增值税预交款怎么算
  • 资产减值损失列示在利润表哪里
  • 弥补以前年度亏损从哪里取数
  • 去年盈利今年亏损怎么表达
  • 未取得发票怎么做纳税调增操作
  • 企业合并资本公积转留存收益
  • 退休职工费用哪里列支
  • 五月份和六月份都有什么节日
  • 企业利润表中营业收入在资产负债表中有勾千盾关系吗
  • 接受应税劳务的会计分录
  • 小企业出售无形资产发生的净损失应当计入什么科目
  • 商业汇票付款方通过哪个会计科目核算
  • 投资公司如何确定收入
  • 电脑win10点开始没反应
  • 财务费用增加记借方还是贷方
  • 缴纳当月增值税30000元
  • 平板电脑的windows更新有必要吗
  • 音量图标不显示怎么回事
  • 系统托盘右键
  • linux安装tk
  • 收到租赁发票会计分录怎么做
  • php数组函数 菜鸟
  • 荣耀畅玩7怎么截长图
  • PHP:mcrypt_enc_get_key_size()的用法_Mcrypt函数
  • 转租会计如何记账
  • 企业迁址如何办理手续
  • 家属补助每月发多少钱
  • 权重值的确定可以依据什么
  • json解析格式
  • GPT-4 免费体验方法
  • 其他免税销售额>0时,免税性质代码不能为空是什么意思
  • 数据挖掘论文选题
  • 上月普通发票怎么作废
  • 运输发票开具条件
  • 捐款 企业
  • 企业所得税没有交
  • windows7怎么操作
  • 职工教育经费税收金额怎么算
  • jdbc连接mysql数据库代码
  • 个人所得税申报方式选哪个比较好
  • 所得税申报表的营业成本包括哪些
  • 注册资本印花税2023年新规定
  • 异地预缴税款怎么做账
  • 实际出资大于注册资金
  • 工程预付款是否含规费和税金
  • 转出上年的进项税怎么算
  • 去年主营业务收入少计
  • 参加新冠疫情防控工作感悟 医务人员
  • 服装公司的会计怎么做账
  • 员工出差托运行李怎么办
  • 盘亏存货可以转回来吗
  • 国有资产无偿划转协议
  • 报关金额多报了900美金怎么办
  • 跨国企业在国外设立工厂的战略地位
  • 编写sql需要注意什么
  • logrotate syslog
  • 自动隐藏桌面图标
  • win10如何清除系统
  • 升级win10后悔了
  • linux怎样使用
  • javascript的用法
  • android自学之路
  • unity怎么做触屏按键
  • js 异步队列
  • python数字图像处理库
  • jquery基本操作
  • js工具类库
  • 增值税普通发票可以抵扣吗
  • 办理企业步骤
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设