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

  • 九宫格爱心拼图朋友圈文案(九宫格爱心拼图)(九宫格爱心拼图模板)

    九宫格爱心拼图朋友圈文案(九宫格爱心拼图)(九宫格爱心拼图模板)

  • 微信支付指纹怎么取消(微信支付指纹怎么设置在哪里)

    微信支付指纹怎么取消(微信支付指纹怎么设置在哪里)

  • 淘宝怎么关闭淘友圈(淘宝怎么关闭淘友圈,别人看不到你买了什么东西)

    淘宝怎么关闭淘友圈(淘宝怎么关闭淘友圈,别人看不到你买了什么东西)

  • 华为nova7pro支持内存扩展的吗(华为nova7pro支持nfc功能吗)

    华为nova7pro支持内存扩展的吗(华为nova7pro支持nfc功能吗)

  • ios14怎么删除软件(ios14.0怎么删除软件)

    ios14怎么删除软件(ios14.0怎么删除软件)

  • 探探对方账号异常(探探对方账号异常多久能恢复)

    探探对方账号异常(探探对方账号异常多久能恢复)

  • 电脑怎么进去安全模式(电脑怎么进去安全模式 win7)

    电脑怎么进去安全模式(电脑怎么进去安全模式 win7)

  • 荣耀9x是几g手机(荣耀9x是4g手机还是5g手机)

    荣耀9x是几g手机(荣耀9x是4g手机还是5g手机)

  • 快手删作品对账号有影响吗(快手删作品还能找回吗)

    快手删作品对账号有影响吗(快手删作品还能找回吗)

  • 9代酷睿为什么取消超线程(9代酷睿为什么还那么贵)

    9代酷睿为什么取消超线程(9代酷睿为什么还那么贵)

  • air pods可以连安卓手机吗(airpods可以连安卓手机吗)

    air pods可以连安卓手机吗(airpods可以连安卓手机吗)

  • 抖音删除作品赞还在吗(抖音删除作品赞还会在主页显示吗)

    抖音删除作品赞还在吗(抖音删除作品赞还会在主页显示吗)

  • 荣耀10怎么退出talkback(荣耀10怎么退出防误触模式)

    荣耀10怎么退出talkback(荣耀10怎么退出防误触模式)

  • 小米手机打开短信闪退(小米手机打开短信说首次开通网络短信)

    小米手机打开短信闪退(小米手机打开短信说首次开通网络短信)

  • 移动手机号pin码怎么查(移动手机号pin码忘记怎么办)

    移动手机号pin码怎么查(移动手机号pin码忘记怎么办)

  • 内存储器分为哪三种(内存储器分为哪三部分)

    内存储器分为哪三种(内存储器分为哪三部分)

  • 显示器开机亮一下就黑屏是怎么回事(显示器开机亮一下就灭 指示灯亮)

    显示器开机亮一下就黑屏是怎么回事(显示器开机亮一下就灭 指示灯亮)

  • 绑定qq的手机号丢了怎么解绑(绑定qq的手机号码不用了怎么登录)

    绑定qq的手机号丢了怎么解绑(绑定qq的手机号码不用了怎么登录)

  • 抖音发视频为啥要审核(抖音发视频为啥添加不了话题)

    抖音发视频为啥要审核(抖音发视频为啥添加不了话题)

  • 抖音怎么加快图片播放速度(抖音图片怎么加速度播放)

    抖音怎么加快图片播放速度(抖音图片怎么加速度播放)

  • 酷家乐怎么复制方案到另一个账号(酷家乐怎么复制模型)

    酷家乐怎么复制方案到另一个账号(酷家乐怎么复制模型)

  • qq钱包交易记录恢复(qq钱包交易记录可以查几年)

    qq钱包交易记录恢复(qq钱包交易记录可以查几年)

  • oppoa9重量(oppoa9手机重量是多少)

    oppoa9重量(oppoa9手机重量是多少)

  • realmex多重(realme x手机重量)

    realmex多重(realme x手机重量)

  • 苹果se相当于小米几(iphone se相当于现在的什么手机)

    苹果se相当于小米几(iphone se相当于现在的什么手机)

  • 抖音怎么退工会(抖音怎么退工会120天)

    抖音怎么退工会(抖音怎么退工会120天)

  • 如何解决Win7系统旗舰版桌面图标全部不见了?(如何解决win7系统不稳定)

    如何解决Win7系统旗舰版桌面图标全部不见了?(如何解决win7系统不稳定)

  • 网页提示502 Bad Gateway如何修复?(网页提示摄像头未授权)

    网页提示502 Bad Gateway如何修复?(网页提示摄像头未授权)

  • [3D检测系列-PointRCNN]复现PointRCNN代码,并实现PointRCNN3D目标检测可视化,包含预训练权重下载链接(从0开始以及各种报错的解决方法)(3d检测软件)

    [3D检测系列-PointRCNN]复现PointRCNN代码,并实现PointRCNN3D目标检测可视化,包含预训练权重下载链接(从0开始以及各种报错的解决方法)(3d检测软件)

  • lua命令  独立的Lua解释器(lua命令库)

    lua命令 独立的Lua解释器(lua命令库)

  • 个税要计提吗?
  • 企业计提增值税 附加税
  • 已知不含税金额和税额怎么求税率
  • 收到生育津贴会计分录怎么做
  • 资产整体转让税收
  • 计划成本法委托加工物资例题
  • 稿酬收入怎么算
  • 非独立核算的分公司怎么做账
  • 建筑物加高违法么
  • 房地产企业收到预收款如何纳税
  • 2021年洗车是不是免增值税
  • 原材料采购没正式发票能否入账?
  • 个体行业哪些不需要交税
  • 处置交易性金融资产发生的交易费用
  • 预交电费有发票吗
  • 增值税电子发票怎么下载
  • 年薪制离职补偿金
  • 增值税发票是需要先对公转账吗
  • 商品混凝土增值税政策
  • 税控盘服务费跨年还能抵吗
  • 什么是红字信息表编号
  • 应征增值税不含税销售额(3%征收率)怎么算
  • 保证金计入哪个会计科目
  • 先开票还是先预约
  • 跨省银行承兑汇票可以接受吗
  • 自己生产的水泥用于建造厂房
  • 计算内含报酬率所使用的年金现值系数
  • 固定资产丢失进项税需要转出吗
  • 资产减值损失汇算清缴需要调增嘛?
  • 私立医院交所得税吗
  • 锁定任务栏不管用
  • 目前光学变焦最大支持多少倍
  • 财政部土地出让收支管理办法
  • 路由器晚上关了,早上再开信号会好吗?
  • php 可变变量
  • 税务稽查的进项税怎么处理
  • 小规模纳税人和一般纳税人的区别
  • apache环境搭建
  • bert模型能做什么
  • 专用发票跨月冲红给对方吗
  • 无偿调出固定资产账面价值为零如何处理
  • 不按发票金额付款说明
  • python 函数的返回值
  • 织梦自定义模型调用
  • 开增值税专用发票的好处
  • sql数据库聚集索引和非聚集索引的区别是什么?
  • sqlserver 创建链接服务器
  • 家具厂成本
  • 申报表本期金额和上期金额
  • 个体户该怎么交公积金
  • 红冲发票怎么写分录
  • 员工借款属于什么现金流量
  • 固定资产清理属于什么科目
  • 库存商品盘盈怎么做账
  • 公司要注销账面怎么处理
  • 企业专家咨询费标准
  • 初级会计现值的计算
  • 月末一次加权平均和移动加权平均的区别
  • 哪些资产减值可以转回哪些不可转回
  • 旅游饮食服务企业会计核算的特点
  • 如何删除多余的空白表格
  • Mac怎么强制关闭窗口
  • 如何将用户加入某个组
  • sendmailadmin
  • pe工具箱怎么用
  • win7系统怎么把桌面文件放到d盘
  • Linux怎么删除文件第一行
  • windowsaudio服务不存在或已删除
  • mac怎么自定义桌面图标
  • 关闭迅雷安卓版自动更新
  • win7空间不足c盘
  • vb6.0win10安装教程
  • cocos2dx schedule
  • cocos creator 优化 drawcall 合并
  • tomcat怎么启动
  • 深入理解计算机系统 电子书
  • 公司跨区迁移税务查账严吗
  • 国家税务总局惠州仲恺高新技术产业开发区税务局
  • 树叶加树叶等于几
  • 护士的专业素质要求
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设