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

  • windows10激活密钥(windows10激活密钥可以重复使用吗)

    windows10激活密钥(windows10激活密钥可以重复使用吗)

  • 华为智能门锁能用小米手机开吗(华为智能门锁能不能远程开锁)

    华为智能门锁能用小米手机开吗(华为智能门锁能不能远程开锁)

  • 怎样注册淘宝开店流程(开淘宝怎么注册流程)

    怎样注册淘宝开店流程(开淘宝怎么注册流程)

  • vivox50耳机孔在哪里(vivox50的耳机孔)

    vivox50耳机孔在哪里(vivox50的耳机孔)

  • 华为荣耀20用的什么屏幕(华为荣耀20用的什么系统)

    华为荣耀20用的什么屏幕(华为荣耀20用的什么系统)

  • ipadmini微信不兼容(ipadmini微信不兼容怎么回事)

    ipadmini微信不兼容(ipadmini微信不兼容怎么回事)

  • 滴滴可以每日提现吗(滴滴每日提现规则)

    滴滴可以每日提现吗(滴滴每日提现规则)

  • qq亲密度高说明什么(qq好友亲密度高意味)

    qq亲密度高说明什么(qq好友亲密度高意味)

  • 哔哩哔哩的视频怎么下载(哔哩哔哩的视频怎么保存到电脑)

    哔哩哔哩的视频怎么下载(哔哩哔哩的视频怎么保存到电脑)

  • 微信怎么无限实名(微信号无限实名方法)

    微信怎么无限实名(微信号无限实名方法)

  • 微信运动22点后算不算(微信运动22点后算当天还是第二天)

    微信运动22点后算不算(微信运动22点后算当天还是第二天)

  • 微信群链接多久失效(微信群链接发多了会封号吗)

    微信群链接多久失效(微信群链接发多了会封号吗)

  • 下载的东西怎么桌面上没有(下载的内容怎么到桌面上)

    下载的东西怎么桌面上没有(下载的内容怎么到桌面上)

  • 手机照片怎么导入u盘(手机照片怎么导入移动硬盘)

    手机照片怎么导入u盘(手机照片怎么导入移动硬盘)

  • 手机qq怎样查看特别关心(手机qq怎样查看q龄)

    手机qq怎样查看特别关心(手机qq怎样查看q龄)

  • 苹果13.1.2查找怎么用(ios13.7查找iphone)

    苹果13.1.2查找怎么用(ios13.7查找iphone)

  • 华为wifi放大器怎么用(华为wifi放大器怎么重新设置)

    华为wifi放大器怎么用(华为wifi放大器怎么重新设置)

  • 抖音删除留言会提醒对方吗(抖音留言删除了能恢复吗)

    抖音删除留言会提醒对方吗(抖音留言删除了能恢复吗)

  • e480如何进入bios(e480如何进入安全模式)

    e480如何进入bios(e480如何进入安全模式)

  • 荣耀20nfc怎么使用(荣耀20nfc区域在哪)

    荣耀20nfc怎么使用(荣耀20nfc区域在哪)

  • 抖音怎么加后半段音乐(如何在抖音最后加自己的抖音码)

    抖音怎么加后半段音乐(如何在抖音最后加自己的抖音码)

  • iphone网易云会员退订(iphone网易云会员过期下载的歌能听吗)

    iphone网易云会员退订(iphone网易云会员过期下载的歌能听吗)

  • 手机耳机接口标准(手机耳机接口叫什么接口)

    手机耳机接口标准(手机耳机接口叫什么接口)

  • pico命令  编辑文字文件(pico实例)

    pico命令 编辑文字文件(pico实例)

  • 汇算清缴退税会计科目
  • 企业所得税的代码是什么
  • 金蝶eas怎么用
  • 罚款可以直接在公安局缴纳吗
  • 财务如何审核合同支付条款风险
  • 工会经费计税
  • 研发加计扣除减免税
  • 存货清查的结果
  • 期末调汇的会计科目
  • 银行手续费发票怎么开
  • 子公司注销资产负债表如何合并
  • 需要月报的税收项目
  • 建筑工程总包单位招聘
  • 个人如何开劳务费怎么开
  • 减免税款为什么在借方
  • 国税局代开增值税专票要哪些资料?
  • 定额发票是啥
  • 金融行业小规模纳税人税率
  • 钢板租赁费用
  • 增值税简易征收一览表
  • 公司做账挂名字
  • 农产品进项税抵扣计算例题
  • 我的初级备考经验,认真就有收获
  • 买车的增票可以分两次吗
  • 小规模纳税人增值税超过30万怎么纳税
  • 以前年度损益调整编码
  • 股权转让怎么交个人所得税
  • win10新建文件夹快捷键ctrl加什么
  • 职工福利费支付范围
  • php汉字转拼音代码
  • 软件测试费计入什么科目
  • 如何在pc桌面上添加文件
  • 固定资产和低值易耗品的登记和管理咋弄?
  • 提取企业发展基金分录比例
  • 银行收取对公账户服务费有什么用
  • nuxt怎么用
  • csdn创作
  • vue遍历数组
  • 卷积拆分
  • phpwhile循环多维数组
  • php socket_create
  • 支付厂房租赁费怎么入账
  • 小规模发票跨月冲红怎么做账
  • 罚款属于其他业务收入吗
  • dedecms仿站如何做
  • 帝国cms使用手册
  • 免费学电脑的网站
  • 未开票收入是怎么算的
  • sql中order by 1
  • 应交增值税负数表示什么
  • 第三方代销什么意思
  • 原材料变为商品怎么做账
  • 个体工商户要进行汇算清缴吗
  • 带息票据贴现账务处理
  • 无法支付的应付账款摘要怎么写
  • 企业内部之间借款利息可以税前扣除吗
  • 成品油经销企业资质
  • 企业注销在建工程怎么处理
  • 什么经营范围可以开推广服务费
  • 公司购买的车辆
  • 公司基本户可以取现金吗
  • 计算机二级考试一年考几次
  • sql sever实验指导
  • w7系统ip地址
  • 怎么设置xp系统
  • Windows更新失败
  • win7能不能安装vs2019
  • 如何显示文件后缀win10
  • linux中文件系统
  • win8界面什么样
  • ExtJS 2.0实用简明教程 之Border区域布局
  • main报错
  • unicode类型 python
  • jquery cookie存取
  • ECLIPSE编辑器
  • android的数据储存方式
  • jquery日期选择器
  • 福建省税务报税系统官网
  • 广东省广州市税务局分数线
  • 企业所得税法里财产转让所得是什么意思
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设