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

  • 微信怎么换铃声(手机微信怎么换铃声)

    微信怎么换铃声(手机微信怎么换铃声)

  • 虚拟位置定位精灵怎么添加不了应用(虚拟位置定位精灵2.35.5)

    虚拟位置定位精灵怎么添加不了应用(虚拟位置定位精灵2.35.5)

  • 微博发帖在哪发(微博发帖在哪发的)

    微博发帖在哪发(微博发帖在哪发的)

  • 快手发作品能随便定位吗(快手发作品能随便发吗)

    快手发作品能随便定位吗(快手发作品能随便发吗)

  • 华为录像选哪个分辨率最清晰(华为录像选哪个模式)

    华为录像选哪个分辨率最清晰(华为录像选哪个模式)

  • 淘宝新开店铺标志什么时候去掉(淘宝新开店铺标签有多久)

    淘宝新开店铺标志什么时候去掉(淘宝新开店铺标签有多久)

  • 无线网需要认证是怎么回事(无线网需要认证但是打不开)

    无线网需要认证是怎么回事(无线网需要认证但是打不开)

  • 在word中如何删除空白页(在word中如何删除分节符)

    在word中如何删除空白页(在word中如何删除分节符)

  • 微信朋友圈提醒谁看是什么意思(微信朋友圈提醒对方看,对方会知道是你在提醒他看吗)

    微信朋友圈提醒谁看是什么意思(微信朋友圈提醒对方看,对方会知道是你在提醒他看吗)

  • 手机联系人删除为啥还会出现(手机联系人删除了还能恢复吗)

    手机联系人删除为啥还会出现(手机联系人删除了还能恢复吗)

  • 苹果电脑128g够用吗(苹果电脑的128g实际有多大)

    苹果电脑128g够用吗(苹果电脑的128g实际有多大)

  • 图片动画效果怎么设置(图片动画效果怎么过度到下一页)

    图片动画效果怎么设置(图片动画效果怎么过度到下一页)

  • qq运动步数有延迟吗(qq运动步数有延迟怎么办)

    qq运动步数有延迟吗(qq运动步数有延迟怎么办)

  • 天猫发错货赔偿规则(天猫发错货赔偿多少)

    天猫发错货赔偿规则(天猫发错货赔偿多少)

  • 微信消息发不出去怎么回事网络一切正常(微信消息发不出去)

    微信消息发不出去怎么回事网络一切正常(微信消息发不出去)

  • 蓝牙耳机降噪什么意思(蓝牙耳机降噪什么技术)

    蓝牙耳机降噪什么意思(蓝牙耳机降噪什么技术)

  • ios13自动调整亮度(苹果ios13自动调节亮度)

    ios13自动调整亮度(苹果ios13自动调节亮度)

  • 华为p20充电器是几安(华为p20充电器是多大功率)

    华为p20充电器是几安(华为p20充电器是多大功率)

  • qq预计账号上限什么意思(qq预计账号上限怎么办)

    qq预计账号上限什么意思(qq预计账号上限怎么办)

  • 小米手环4有测血压功能吗(小米手环4有测温功能吗)

    小米手环4有测血压功能吗(小米手环4有测温功能吗)

  • 华为手机的otc开关在哪(华为手机在哪里开otc)

    华为手机的otc开关在哪(华为手机在哪里开otc)

  • 若依框架添加新模块(若依框架使用教程)

    若依框架添加新模块(若依框架使用教程)

  • php使用array_diff去除元素(php使用while循环计算1到100的和)

    php使用array_diff去除元素(php使用while循环计算1到100的和)

  • 初级会计职称能加多少工资
  • 增值税应纳税额的计算
  • 一次性扣除固定资产政策案例
  • 经营范围变更银行不变更有影响吗
  • 银行进账单票据号码在哪里
  • 报销应聘人员差旅费
  • 销售材料应确认的损益是什么意思
  • 会计政策变更与会计估计的审计
  • 开办费如何做纳税调增
  • 土地前期开发费用计征契税
  • 商贸企业销售商品结转成本是手工算吗
  • 不开票不走公账的后果
  • 事业单位发票名称是原来的怎么办
  • 增值税电子发票怎么作废
  • 营改增后不动产出租适用税率
  • 每月能领多少专利费
  • 发票作废了还能认证吗
  • 城建税漏报怎么办
  • 农产品收购发票怎么抵扣
  • 红字发票信息表是销方还是购方开
  • 转账时开户行写错了钱转出去了对方收不到
  • 土地增值税的纳税人是在我国境内
  • 什么情况下从价计征房产税
  • 作废的发票没有验旧丢了怎么办
  • 开电子发票是填不含税单价吗
  • 营改增后挂靠工程会计分录具体怎么做?
  • 如何进行降压治疗
  • 增值税附加怎么入账
  • 政府补助计量的基础是
  • 关于员工被辞退经济赔偿
  • 股权无偿赠与协议书范本
  • 开启资源管理器自动刷新功能
  • php的数据类型主要有哪几种?
  • php dicom
  • laravel orm使用
  • php对接第三方支付
  • 用php制作年历
  • 遍历目录文件
  • 购买工程物资是什么费用
  • 收到发票现金支付
  • opengl加阴影
  • python中np.array用法
  • phpcms缩略图不要自动裁剪的设置方法
  • 网站升级改造方案
  • 纳税收入包括居民个人在境外取得的收入吗?
  • 资产减值损失属于
  • 视同销售要不要确认收入?
  • 小规模纳税人有哪些
  • 盘亏盘盈的会计处理
  • 诉讼费应计入什么会计科目
  • 第三季度利润
  • 应收款项减值的备抵法及其会计处理
  • 房屋租赁产生的税费叫什么
  • 跨年的社保,账务怎么处理?
  • 其他业务收入如何填写增值税申报表
  • 著作权使用费收费标准
  • 商业承兑汇票开票流程
  • b-树和b+树都能有效地支持随机检索
  • 电脑windowsxp无法启动怎么办
  • mac开机密码怎么取消
  • win7原始账号和密码
  • windows10周年更新
  • win10win8
  • win7关闭uac是什么意思
  • pdf文件下载后打不开
  • jquery链式操作原理
  • 使用nodejs中httpProxy代理时候出现404异常的解决方法
  • Unity3D游戏开发引擎
  • JQuery ZTree使用方法详解
  • Android studio 无法勾选sdk
  • 深入理解新发展理念,推进供给侧结构性改革心得体会
  • scrapy爬虫教程
  • android的图片文件保存在工程的哪个文件夹
  • 加油站怎么收税
  • 济南税务局投诉电话
  • 税务系统干部选拔任用工作树立导向
  • 车险专票怎么做账
  • 变更税务登记后多长时间生效
  • 所有企业都要做应急预案吗
  • 火车票是否出票查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设