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

  • word表格上下错开怎么对齐(word表格上下错位拉不齐)

    word表格上下错开怎么对齐(word表格上下错位拉不齐)

  • 抖音怎么解除收藏仅自己可见(抖音怎么解除收藏不可见)

    抖音怎么解除收藏仅自己可见(抖音怎么解除收藏不可见)

  • 支付宝ETC蓝牙无法激活(支付宝etc蓝牙无法连接)

    支付宝ETC蓝牙无法激活(支付宝etc蓝牙无法连接)

  • 华为手机千牛老是离线状态(华为手机千牛自动离线,什么原因)

    华为手机千牛老是离线状态(华为手机千牛自动离线,什么原因)

  • 腾讯课堂下课多久后有回放(腾讯课堂老师已下课)

    腾讯课堂下课多久后有回放(腾讯课堂老师已下课)

  • 小牛充电器为什么这么烫(小牛充电器为什么是三孔)

    小牛充电器为什么这么烫(小牛充电器为什么是三孔)

  • 淘宝分享链接对方会看到个人信息吗(淘宝分享链接对方看不到)

    淘宝分享链接对方会看到个人信息吗(淘宝分享链接对方看不到)

  • x30屏幕尺寸(荣耀x30屏幕尺寸)

    x30屏幕尺寸(荣耀x30屏幕尺寸)

  • 主板不通电一般是哪里出问题(主板不通电一般什么问题)

    主板不通电一般是哪里出问题(主板不通电一般什么问题)

  • 爱奇艺杜比音效要戴耳机吗(爱奇艺杜比音效声音变小)

    爱奇艺杜比音效要戴耳机吗(爱奇艺杜比音效声音变小)

  • miui10能解决4g断流问题吗(小米10双4g断流)

    miui10能解决4g断流问题吗(小米10双4g断流)

  • vivox30耳机是什么型号(vivox30耳机是什么接口)

    vivox30耳机是什么型号(vivox30耳机是什么接口)

  • 系统专业版和家庭版有什么区别(系统专业版和家庭版哪个好)

    系统专业版和家庭版有什么区别(系统专业版和家庭版哪个好)

  • 京东退货优惠券退么(京东退货优惠券会退回吗)

    京东退货优惠券退么(京东退货优惠券会退回吗)

  • 如何恢复电脑中未备份的微信(如何恢复电脑中卸载的软件电)

    如何恢复电脑中未备份的微信(如何恢复电脑中卸载的软件电)

  • 华为服务app在哪里(华为手机服务中心app)

    华为服务app在哪里(华为手机服务中心app)

  • 荣耀原相机怎么调滤镜(荣耀原相机怎么关美颜)

    荣耀原相机怎么调滤镜(荣耀原相机怎么关美颜)

  • 手机usb反向充电怎么回事(手机usb反向充电改不了)

    手机usb反向充电怎么回事(手机usb反向充电改不了)

  • hdr和蓝光哪个清晰(hdr和蓝光1080p哪个更清晰)

    hdr和蓝光哪个清晰(hdr和蓝光1080p哪个更清晰)

  • 可以通过微信号定位吗(可以通过微信号找到人的位置吗)

    可以通过微信号定位吗(可以通过微信号找到人的位置吗)

  • 无法重设安全提示问题(无法重设安全提示怎么办)

    无法重设安全提示问题(无法重设安全提示怎么办)

  • 618返场是什么(2021 618返场)

    618返场是什么(2021 618返场)

  • 苹果手表充电没反应(苹果手表充电没有闪电标志)

    苹果手表充电没反应(苹果手表充电没有闪电标志)

  • 苹果手机开热点为什么搜不到(苹果手机开热点电脑搜不到怎么办)

    苹果手机开热点为什么搜不到(苹果手机开热点电脑搜不到怎么办)

  • 微信号怎么改成手机号码(微信号怎么改成电话号码不加字母)

    微信号怎么改成手机号码(微信号怎么改成电话号码不加字母)

  • 详解Linux系统中su和sudo命令的用法(linux sl)

    详解Linux系统中su和sudo命令的用法(linux sl)

  • python中如何创建带有文件名的临时文件?(python中如何创建字典)

    python中如何创建带有文件名的临时文件?(python中如何创建字典)

  • 个人所得税专项附加扣除子女教育
  • 什么是转登记纳税人
  • 什么叫征期抄税?
  • 季度内超过30万红冲后用不用缴税?
  • 工厂房租没有发票怎么办
  • 支付职工的培训费计入什么科目
  • 小额转款
  • 存货减值税务处理
  • 临时工工资怎么申报个人所得税
  • 应纳税所得额为什么要减去国债利息收入
  • 增值税加计扣除政策
  • 净收益营运指数大于1说明什么
  • 固定资产报废变卖收入缴税账务处理
  • 银行手续费没拿可以退吗
  • 公司对公租车保险的规定
  • 已注销企业可以恢复吗
  • 出纳现金日记账表格模板
  • 增值税专用发票电子版
  • 增值税普通发票可以抵扣吗
  • 出口退税对企业利润的影响
  • 买牛奶的公司会计怎么做账
  • 2021年沙子水泥税率是多少
  • 一般纳税人所得税优惠政策
  • 开票超过离线时长怎么解决
  • 资本资产定价模型
  • 使用时间长但金币不见了
  • 计提固定资产会计科目
  • 保户储金科目属于保险公司的什么科目
  • 小规模收入未达50万
  • win11系统更新卡在25%
  • iphone6按键功能介绍
  • 最新w10系统专业版
  • 营运能力指标正常范围
  • 电脑进不了系统怎么用u盘重装
  • “linux系统”
  • 跨年冲减无发票怎么入账
  • windows11更新多大
  • pyecharts绘制柱状图动态图
  • 免税企业所得税的有
  • wordpress如何使用
  • php获取另一个php返回内容
  • 财政预算单位可以既是省级又是中央
  • 纳税人超过应缴纳税额缴纳的税款
  • php数组函数有哪些
  • vue中webpack用来干啥
  • 《linux内核分析》
  • PHP中使用什么关键字声明变量的作用域为全局
  • 微信手续费由谁承担
  • 住宿费可以抵扣进项吗
  • 记账凭证中的会计科目错误导致账簿错误的更正法
  • mac安装mysql8.0
  • mongo认证失败
  • 人工成本与工资的关系
  • 软件无形资产摊销年限
  • 企业如何采购
  • 接受银行承兑汇票的流程
  • mysql 随机取出一条
  • 购买商品加包装怎么入账
  • 税控盘被锁死
  • 符合条件的有
  • 餐饮招待怎么入账
  • 工程未竣工可以出竣工报告吗
  • win7系统安装完后启动不了
  • u盘重装操作系统怎么办
  • 优盘安装xp
  • 神墓凌云
  • mac系统快速入门
  • win7电脑dpi怎么设置800
  • win8系统怎么设置无线网连接啊
  • linux批量ping
  • 微软认为
  • Unity3d_用PlayerPrefs保存和读取数组
  • opengl es 2.0是什么
  • dos命令怎么输入命令
  • vue中的组件通信
  • 安卓art set
  • python爬虫京东
  • 车辆购置税是国税吗
  • 个体工商户两处所得,如何减半个税
  • 2019年十堰市高中录取分数线
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设