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

  • 微博营销的基础有哪些?(微博营销基础操作文档知乎)

    微博营销的基础有哪些?(微博营销基础操作文档知乎)

  • 淘宝短视频入口在哪里呢(淘宝短视频怎么操作)

    淘宝短视频入口在哪里呢(淘宝短视频怎么操作)

  • 华为sim卡设置在哪里设置(华为手机的sim卡设置在哪里面)

    华为sim卡设置在哪里设置(华为手机的sim卡设置在哪里面)

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

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

  • 闲鱼怎么注册多个账号(怎么多注册闲鱼号)

    闲鱼怎么注册多个账号(怎么多注册闲鱼号)

  • iphone se有nfc吗(iphonese是否有nfc)

    iphone se有nfc吗(iphonese是否有nfc)

  • 90赫兹刷新率手机有什么意义(90hz刷新率手机)

    90赫兹刷新率手机有什么意义(90hz刷新率手机)

  • 华为手机黑屏后收不到微信(华为手机黑屏后无法唤醒)

    华为手机黑屏后收不到微信(华为手机黑屏后无法唤醒)

  • 乐播投屏无法连接(乐播投屏无法连接什么原因)

    乐播投屏无法连接(乐播投屏无法连接什么原因)

  • 学信网三个密保问题有顺序吗(学信网三个密保问题怎么填)

    学信网三个密保问题有顺序吗(学信网三个密保问题怎么填)

  • 苹果11屏坏了只能用原装吗(iphone11屏坏了)

    苹果11屏坏了只能用原装吗(iphone11屏坏了)

  • 快手无网络连接怎么回事(快手无网络连接怎么办)

    快手无网络连接怎么回事(快手无网络连接怎么办)

  • 苹果手机来电没声音是什么原因(苹果手机来电没有铃声怎么办)

    苹果手机来电没声音是什么原因(苹果手机来电没有铃声怎么办)

  • 支付宝刷脸可以改吗(支付宝刷脸可以取消吗)

    支付宝刷脸可以改吗(支付宝刷脸可以取消吗)

  • 抖音的聊天记录删除后还能恢复吗(抖音的聊天记录可以查到吗)

    抖音的聊天记录删除后还能恢复吗(抖音的聊天记录可以查到吗)

  • 为什么excel里长数字显示出来和原来不符(excel中长数字无法显示)

    为什么excel里长数字显示出来和原来不符(excel中长数字无法显示)

  • 荣耀20和青春版区别(华为荣耀magic5)

    荣耀20和青春版区别(华为荣耀magic5)

  • 苹果的运行内存在哪看(苹果的运行内存4g相当于安卓的多少?)

    苹果的运行内存在哪看(苹果的运行内存4g相当于安卓的多少?)

  • 天猫旗舰店一个人能运营吗(天猫旗舰店一个店多少钱)

    天猫旗舰店一个人能运营吗(天猫旗舰店一个店多少钱)

  • 手机拼多多备注写哪里(手机拼多多备注留言写哪里)

    手机拼多多备注写哪里(手机拼多多备注留言写哪里)

  • 4g峰值速率达到多少(4g峰值速率多少)

    4g峰值速率达到多少(4g峰值速率多少)

  • 手机微博怎么发三角号音乐(手机微博怎么发头条文章)

    手机微博怎么发三角号音乐(手机微博怎么发头条文章)

  • mathtype怎么装到word2016(mathtype怎么装到word2016找不到文件)

    mathtype怎么装到word2016(mathtype怎么装到word2016找不到文件)

  • 帝国CMS中&#091;!--no.num--]标签的用法分析(帝国cms中英)

    帝国CMS中&#091;!--no.num--]标签的用法分析(帝国cms中英)

  • 土地税税额标准
  • 设立登记核准通知书未签名不能办理其他业务
  • 收益性支出包括哪些内容
  • 利润表年度报表
  • 员工团体意外保险怎么报销
  • 一个营业执照可以开几家淘宝店
  • 支付残疾人保证金的账务处理
  • 一般纳税人厂房出租怎么开票
  • 服务,不动产和无形资产扣除项目本期实际扣除金额
  • 可供出售金融资产是指什么
  • 企业清算所得税申报表清算期间
  • 增值税免退税计算方法
  • 以前年度已付的现金
  • 收不回来应收账款会计分录
  • 工会费入账科目
  • 公司厂房在建但已收到房租是否要交房产税呢?
  • 物流公司零税率发票是怎么回事?
  • 开票系统维护费可以全额抵扣吗
  • 追补确认年度是哪一年
  • 农副产品免税怎么报税
  • 合并报表的编制主体
  • 科技项目经费怎么申报
  • 会计事务所成本核算方法
  • 收购股权公司
  • 电脑桌面点击鼠标右键就闪退
  • mac上如何切换apple id
  • 预付账款属于资产类
  • 虚拟机安装apache
  • 补丁自动过期怎么解决
  • 租金摊销表格式
  • php生成二维码源码
  • php中file
  • 子公司取得投资收益
  • javascript获取input的值并计算
  • php框架开发教程
  • laravel框架实现cms的体会
  • php获取浏览器ua
  • 会计等式反映了六大会计要素的恒等关系
  • php对称加密算法
  • 非三包退车能否退款
  • 新事业单位会计制度下固定资产的核算
  • 企业基金分红具体流程
  • 小微企业全年营业额不能超过多少
  • 现金核算如何进行账务处理
  • 员工社保报销流程
  • 利息支出的纳税调整计算公式
  • 办理股权转让需要多久时间
  • 价外费用如何计税
  • 小规模纳税人销售使用过的固定资产
  • 公司销售部门购买产品
  • 简要分析企业购买行为的影响因素
  • 赠送设备如何做账务处理
  • 预付工资怎么入账
  • mysql基本介绍
  • 微软mission
  • fedora update-grub
  • auepuc.exe是什么软件
  • SMax4PNP.exe - SMax4PNP是什么进程
  • sharedprem.exe - sharedprem是什么进程 有什么作用
  • win7 esd安装文件怎么安装教程
  • 常用的linux操作
  • 工商网银安装
  • win10预览版好吗
  • python urllib urlopen
  • python挑战
  • cocos2djs教程
  • jquery validate demo 基础
  • android开发地图应用
  • css如何控制图片位置
  • js数组菜鸟教程
  • css要学到什么程度
  • css兼容浏览器
  • javascript例题
  • Ubuntu修改用户名
  • unity3d碰撞检测源码
  • js如何封装
  • jquery中keyup
  • 税务登记证的电子版在哪
  • 税务局社保服务
  • 租房税费怎么算的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设