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

  • matepad11能插电话卡吗(matepad11可以插)

    matepad11能插电话卡吗(matepad11可以插)

  • 红米9a用的高通的处理器吗(红米9a用的什么cpu)

    红米9a用的高通的处理器吗(红米9a用的什么cpu)

  • 抖音9:16视频尺寸是多少(抖音9:16视频尺寸怎么拍)

    抖音9:16视频尺寸是多少(抖音9:16视频尺寸怎么拍)

  • 怎么卸载华为手机上下载的软件(怎么卸载华为手机上的软件)

    怎么卸载华为手机上下载的软件(怎么卸载华为手机上的软件)

  • QQ被暂时冻结怎么解除(qq被暂时冻结怎么看恢复时间)

    QQ被暂时冻结怎么解除(qq被暂时冻结怎么看恢复时间)

  • 耳机寿命一般多久(耳机寿命多少小时)

    耳机寿命一般多久(耳机寿命多少小时)

  • 微信把人拉黑后对方知道吗(微信把人拉黑后对方还能添加吗)

    微信把人拉黑后对方知道吗(微信把人拉黑后对方还能添加吗)

  • qq发送文件怎么知道对方收到(qq发送文件怎么设置为永久文件)

    qq发送文件怎么知道对方收到(qq发送文件怎么设置为永久文件)

  • 华为p40指纹锁在哪里设置(华为p40 指纹)

    华为p40指纹锁在哪里设置(华为p40 指纹)

  • qq邮箱发视频没有声音(qq邮箱发的视频为什么没有声音)

    qq邮箱发视频没有声音(qq邮箱发的视频为什么没有声音)

  • 华为dub-al00a什么型号(华为手机dub-al00a是什么手机)

    华为dub-al00a什么型号(华为手机dub-al00a是什么手机)

  • 主机发热严重怎么解决(主机发烫怎么回事)

    主机发热严重怎么解决(主机发烫怎么回事)

  • 华为nova6有信息提示灯吗(华为nova6信息提示灯怎么设置)

    华为nova6有信息提示灯吗(华为nova6信息提示灯怎么设置)

  • OPPOfindx外屏碎了(oppofindx外屏碎了怎么办)

    OPPOfindx外屏碎了(oppofindx外屏碎了怎么办)

  • 华为p30可以升级5g吗(华为p30可以升级鸿蒙3吗)

    华为p30可以升级5g吗(华为p30可以升级鸿蒙3吗)

  • 光猫显示注册啥意思(光猫展示注册)

    光猫显示注册啥意思(光猫展示注册)

  • 为什么逆光拍摄很暗(为什么逆光拍照不好看)

    为什么逆光拍摄很暗(为什么逆光拍照不好看)

  • 小米8怎么调时间(小米8怎么调时间显示)

    小米8怎么调时间(小米8怎么调时间显示)

  • 苹果x后置呼吸灯怎么设置(iphonex后置)

    苹果x后置呼吸灯怎么设置(iphonex后置)

  • iphone11几号上市(苹果11几号上市)

    iphone11几号上市(苹果11几号上市)

  • iphone10是什么手机(iphone10是什么意思)

    iphone10是什么手机(iphone10是什么意思)

  • 怎么查看快手关注的人(怎么查看快手关注历史)

    怎么查看快手关注的人(怎么查看快手关注历史)

  • 怎么查看火车行驶路线(怎么查看火车行驶轨迹)

    怎么查看火车行驶路线(怎么查看火车行驶轨迹)

  • 荣耀20多少w快充(荣耀20多少w快充正常)

    荣耀20多少w快充(荣耀20多少w快充正常)

  • Mac设置默认在当前文件夹下搜索的方法(mac怎么设置默认程序)

    Mac设置默认在当前文件夹下搜索的方法(mac怎么设置默认程序)

  • dslstat.exe是什么进程  dslstat进程的作用是什么(ds file是干什么的)

    dslstat.exe是什么进程 dslstat进程的作用是什么(ds file是干什么的)

  • 为在线客服系统接入chatGPT(四):chatGPT接口vue网页版,可以联系上下文语境,可以实现自己的chatGPT,附代码(在线客服系统登录)

    为在线客服系统接入chatGPT(四):chatGPT接口vue网页版,可以联系上下文语境,可以实现自己的chatGPT,附代码(在线客服系统登录)

  • 新注册公司没有员工怎么报个税
  • 废铁回收行业前景怎么样
  • 教育培训学校怎么翻译
  • 兼职合同工资发放
  • 带清单的发票怎么贴原始凭证
  • 资产申报是什么
  • 待摊费用可以转入固定资产吗
  • 税务机关如何正确行使代位权
  • 固定资产报废的会计科目
  • 防伪税控开票系统技术维护费
  • 长期借款会计科目编码
  • 公司车买的保险怎么查电子保单
  • 运输公司租入的车辆如何核算
  • 什么发票可以抵税
  • 国税退税需要多长时间
  • 电子钥匙续费能退款吗
  • 15-算
  • 企业所得税季报资产总额怎么填
  • 企业所得税减免税额计算公式
  • 接受个人投资现金怎么做账务处理?
  • 跨月发票作废怎么红冲
  • 销售商品抹零需要怎么入账
  • 虚拟股份分红
  • 个体工商户公转私用途写什么
  • 企业奠基费用如何入账
  • 长期股权投资评估报告模板
  • 设备安装用工程造价吗
  • 企业开发产品转为自用的,不得在税前扣除折旧费用
  • 月末结转未分配利润吗
  • PHP:preg_quote()的用法_PCRE正则函数
  • 最小的固态硬盘多大尺寸
  • web转义字符
  • php7安装教程详解
  • anaconda创建虚拟环境有什么用
  • Pytorch DataLoader中的num_workers (选择最合适的num_workers值)
  • python3 字典遍历
  • 原材料用于在建工程增值税如何处理
  • 个体工商户一年要交多少税
  • 公司租车公司
  • 2022年最新苹果平板电脑
  • java中空字符怎么表示
  • php无法上传文件
  • 发布相应的搜索公告
  • mongodb时序
  • 积分兑换合适吗
  • 税控盘每年的服务费可以全额抵扣吗
  • 个人利息收入怎么计算个税
  • 权责发生制是根据发票入账吗
  • 买水果送水果这样营销可以吗
  • 食堂采购原材料怎么在赣溯源备案
  • 应收分保合同准备材料
  • 其他应付现金流量表
  • 支付贷款利息的现金流量怎么指定?
  • 销售费用的定义是什么意思
  • 期初试算平衡表资产多
  • 管理费用一般包含研发费用吗
  • 银行的结息怎么做会计分录
  • 外资企业计提盈余公积吗
  • 所得税汇算清缴前取得跨年发票
  • 哪些人必须办理纳税登记
  • 小企业持有的不良资产
  • windows8.1使用教程
  • ubuntu20开机自启动
  • win7如何升级win11系统
  • QT for Android HelloWorld实现
  • Cocos2dx 疯狂跑酷(CrazyRun)游戏项目解析
  • Node.js中的全局变量有哪些
  • Android使用领域是什么
  • ugui scrollview
  • javascript取随机数
  • 深入理解计算机系统
  • android数据存储与访问的方式有
  • python中编写程序
  • 北京地税税务总局官网
  • 江苏电子税务局客服电话
  • 单位没有缴纳个人医保
  • 税控盘监控信息写盘失败时钟校准
  • 供电企业向电厂收取的并网服务费
  • 浙江摩托车上牌条件
  • 预缴税款怎么做账
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设