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

  • 导航怎么知道红灯即将变绿?其实很简单

    导航怎么知道红灯即将变绿?其实很简单

  • android 自定义view(Android 自定义view面试题)

    android 自定义view(Android 自定义view面试题)

  • vscode代码格式化(vscode代码格式化快捷键设置)

    vscode代码格式化(vscode代码格式化快捷键设置)

  • word如何调整行距大小(Word如何调整行间距统一)

    word如何调整行距大小(Word如何调整行间距统一)

  • k30pro变焦版支持双5g吗(k30pro变焦版支持无线充电吗)

    k30pro变焦版支持双5g吗(k30pro变焦版支持无线充电吗)

  • 荣耀20pro的耳机孔插哪(荣耀20pro的耳机接口在哪里)

    荣耀20pro的耳机孔插哪(荣耀20pro的耳机接口在哪里)

  • 找不到网页是怎么回事(找不到网页了)

    找不到网页是怎么回事(找不到网页了)

  • 抖音喜欢隐藏2个无效视频(抖音喜欢隐藏了一个无效视频是什么意思)

    抖音喜欢隐藏2个无效视频(抖音喜欢隐藏了一个无效视频是什么意思)

  • 机箱rgb线怎么接(机箱rgb线怎么接电源)

    机箱rgb线怎么接(机箱rgb线怎么接电源)

  • qq标识巨轮出不来是为什么(qq标识巨轮突然不见了)

    qq标识巨轮出不来是为什么(qq标识巨轮突然不见了)

  • 电源开关on和off哪个是开(电源开关off和on怎么读)

    电源开关on和off哪个是开(电源开关off和on怎么读)

  • 苹果11promax充电口变了吗(苹果11promax充电器原装图片)

    苹果11promax充电口变了吗(苹果11promax充电器原装图片)

  • 抖音解封需要多久(抖音解封多少钱联系人)

    抖音解封需要多久(抖音解封多少钱联系人)

  • 钉钉显示两个名怎么办(钉钉显示两个名字)

    钉钉显示两个名怎么办(钉钉显示两个名字)

  • 苹果退款后充值的东西还在吗(苹果退款后充值的快币还在吗)

    苹果退款后充值的东西还在吗(苹果退款后充值的快币还在吗)

  • 手机gps定位不准怎么办(gps在手机哪个位置能找到)

    手机gps定位不准怎么办(gps在手机哪个位置能找到)

  • realmeq有nfc功能吗(realme手机有nfc)

    realmeq有nfc功能吗(realme手机有nfc)

  • iphone7p和8p电池通用吗(iphone7p和8p电池容量对比)

    iphone7p和8p电池通用吗(iphone7p和8p电池容量对比)

  • 华为nova5pro呼吸灯怎么设置(华为nova5i pro呼吸灯怎么调出来)

    华为nova5pro呼吸灯怎么设置(华为nova5i pro呼吸灯怎么调出来)

  • 手机插优盘后如何使用(手机插优盘后如何清理缓存文件夹)

    手机插优盘后如何使用(手机插优盘后如何清理缓存文件夹)

  • 微型计算机内存容量的大小一般是指什么而言(微型计算机内存储器通常采用)

    微型计算机内存容量的大小一般是指什么而言(微型计算机内存储器通常采用)

  • 小q画笔黑屏怎么回事(小q画笔下载不了)

    小q画笔黑屏怎么回事(小q画笔下载不了)

  • 换手机黑名单还有吗(换手机之后黑名单会自动重置吗)

    换手机黑名单还有吗(换手机之后黑名单会自动重置吗)

  • 触宝电话怎么隐藏号码(触宝电话怎么隐藏起来)

    触宝电话怎么隐藏号码(触宝电话怎么隐藏起来)

  • b站稿件管理在哪(b站app稿件管理)

    b站稿件管理在哪(b站app稿件管理)

  • 手机邮箱怎么打开(手机邮箱怎么打开压缩照片)

    手机邮箱怎么打开(手机邮箱怎么打开压缩照片)

  • wpsppt上视频怎么旋转

    wpsppt上视频怎么旋转

  • 京东加价购是什么(京东加价购怎么操作)

    京东加价购是什么(京东加价购怎么操作)

  • mount.nfs4命令  挂载NFSv4文件系统(nfs4挂载)

    mount.nfs4命令 挂载NFSv4文件系统(nfs4挂载)

  • XMAPP在php中搭建环境(使用xampp建立www服务)

    XMAPP在php中搭建环境(使用xampp建立www服务)

  • 境外承包工程项下资金
  • 计提存款利息
  • 培训产生的差旅费
  • 事业单位私车公用条例
  • 发票加盖公章有用吗
  • 虚开增值税普通罪量刑标准
  • 企业清算需要什么
  • 公司注销后应收款能打到法人账户吗
  • 分包工程有哪些风险
  • 与收益相关政府补助区分总额法净额法吗
  • 2018企业所得税小微企业优惠政策
  • 进项发票可以不入账吗
  • 建筑业开具发票新规定
  • 材料费用定额是什么意思
  • 营业外收入有哪些情况
  • 应税消费品用于连续生产应税消费品的
  • 怎么获得最新医学类指南
  • 销售嵌入式软件产品发票如何开具
  • 股东借款作为项目资本金
  • php array数组
  • 辅导期内的企业有哪些
  • 弗拉维亚王朝
  • 财务专用章是干啥的
  • 天国拯救晕倒的人多久起来
  • 对于小型微利企业的建议
  • 税金及附加的含义
  • thinkphp-5.0
  • php返回数据给ajax
  • 失控发票成本做账怎么做
  • 面试官问:mysql 的自增 id 用完了,怎么办?
  • 自产产品对外赠送的会计处理方法
  • 资本公积常用的计量方法
  • 服务型公司营业执照图片
  • 工程运维预缴增值税税率
  • 网站的首页文件名是什么
  • 筹建期所得税年度申报如何填列
  • 不能税前扣除的业务招待费怎么处理
  • 未确认融资费用摊销额怎么计算
  • 房屋租金的摊销怎么算
  • 公司为职工承担社保费用
  • 计算企业所得税可以扣除的税金
  • 建筑业简易征收的条件
  • 契税是房价乘以1.5吗
  • 账外房屋按评估值入账怎么进行会计处理
  • 应收款钱已收回会计分录
  • 出售设备账务处理
  • 购买材料如何做会计分录
  • 应收账款多收了退回怎么做账
  • 公司固定资产明细表
  • 公司有主营业务收入没有主营业务成本
  • 暂估的进项税额怎么抵扣
  • 水利建设基金要预缴吗
  • 交易性金融资产属于什么科目
  • 施工企业周转材料会计科目的设置
  • 建账的内容一般包括什么
  • vmware虚拟机怎么卸载不了
  • Win10 Mobile 14393.321终于修复Lumia636/638导航栏遮挡
  • Linux操作系统分为
  • windows8怎么关闭广告弹窗
  • linux 杀掉指定用户的进程
  • win1020h2版本是正式版吗
  • win8系统自带应用都打不开了怎么办
  • win10安装字体的操作步骤
  • jQuery中的ajax async同步和异步详解
  • windows批量处理命令
  • 搭建nodejs
  • css制作热点新闻板块
  • jquery库文件
  • python入门100例
  • jquery作品
  • javascript函数的定义
  • python按位与操作
  • javascript数据结构与算法百度云视频资源
  • 小规模纳税人可以开13%的发票吗
  • 怎么查询购置税交了没有
  • 海关税怎么交 怎么算
  • 公司税务认证
  • 四川国税发票查验真伪
  • 冀地是哪里
  • 汽车票用什么查
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设