位置: IT常识 - 正文

promise和async用法及区别(详解)(promise async区别)

编辑:rootadmin
promise和async用法及区别(详解) 一、promisepromise的概念

推荐整理分享promise和async用法及区别(详解)(promise async区别),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:async和promise区别,promise和async的用法,promise与async的区别,async和promise执行顺序,promise 和async,promise 和async,promise和async的用法,promise、async有什么区别,内容如对您有帮助,希望把文章链接给更多的朋友!

Promise 是异步编程的一种解决方案,是一个构造函数,自身有all、reject、resolve方法,原型上有then、catch等方法。

特点:

对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)

一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从pending变为fulfilled和从pending变为rejected。

一句话总结:就是用来解决地域回调问题(地域回调--回调函数里面嵌套回调函数)promise使用方法

用法一:Promise构造函数接受一个函数作为参数,该函数的两个参数分别是resolve和reject。它们是两个函数,由JavaScript引擎提供。

resolve函数的作用是,将Promise对象的状态从“未完成”变为“成功”(即从Pending变为Resolved),在异步操作成功时调用,并将异步操作的结果作为参数传递出去。

reject函数的作用是,将Promise对象的状态从“未完成”变为“失败”(即从Pending变为Rejected),在异步操作失败时调用,并将异步操作报出的错误作为参数传递出去。

用法二:Promise.resolve() 和 Promise.reject() 可以直接被调用。有时候,当判断出 promise 并不需要真正执行时,我们并不需要 使用 new 创建 Promise 对象,而是可以直接调用 Promise.resolve() 和 Promise.reject()。

地狱回调的例子

回调地狱是为了让我们代码执行顺序的一种操作(解决异步),但是它会使我们的可读性非常差。

//地狱回调setTimeout(function () { //第一层console.log('小锁'); //等3秒打印张三在执行下一个回调函数setTimeout(function () { //第二层console.log('李四'); //等2秒打印李四在执行下一个回调函数setTimeout(function () { //第三层console.log('王五'); //等一秒打印王五}, 1000)}, 2000)}, 3000)promise解决地域回调function resolveCallback(name, flag = true) {return new Promise((resolve, reject) => {// 处理异步任务setTimeout(() => {if (flag) {resolve(name)} else {reject('失败')}}, 1000)}, )}resolveCallback('张三').then(res => {console.log(res)return resolveCallback('李四')}).then(res => {console.log(res)return resolveCallback('王五')}).then(res => {console.log(res)}).catch(res => { //捕捉失败的回调结果console.log(res)})Promise.all()方法

Promise.all([ .. ]) 接受一个或多个值的数组(比如,立即值、promise、thenable)。它返回一个promise。

如果所有的值都完成,这个promise 的结果是完成;

promise和async用法及区别(详解)(promise async区别)

一旦它们中的某一个被拒绝,那么这个promise 就立即被拒绝。

let p1 = resolveCallback('张三')let p2 = resolveCallback('李四')let p3 = resolveCallback('王五')let p = Promise.all([p1,p2,p3]).then(res=>{console.log(res)}).catch(res=>{console.log('失败')})Promise.race 方法

Promise.race() 函数返回一个 Promise,它将与第一个传递的 promise 相同的完成方式被完成。它可以是完成( resolves),也可以是失败(rejects),这要取决于第一个完成的方式是两个中的哪个。

let p1 = resolveCallback('张三', 2)let p2 = resolveCallback('李四', 3)let p3 = resolveCallback('王五', 1)let p = Promise.race([p1, p2, p3]).then(res => {console.log(res)}).catch(res => {console.log('失败')})二、asyncasync的概念

Async/Await 代码看起来简洁一些,使得异步代码看起来像同步代码

async函数一定会返回一个promise对象。如果一个async函数的返回值看起来不是promise,那么它将会被隐式地包装在一个promise中。

sync await是基于Promise实现的,可以说是改良版的Promise,它不能用于普通的回调函数。

async 函数中 return 值如何接收?

方式一:通过 promise.then形参获取

方式二:接受函数返回值的方式是 await

await的作用

await关键字的作用 就是获取 Promise中返回的内容, 获取的是Promise函数中resolve或者reject的值(await 作用是获取promise.[[promiseValue]]的值)

关于await的注意点

(1)await 必须写在 async 中

(2)await 后是一个promise实例对象

三、为什么async/await更好?

使用async函数可以让代码简洁很多

不需要像Promise一样需要then

不需要写匿名函数处理Promise的resolve的值

也不需要定义多余的data变量,还避免了嵌套代码

本文链接地址:https://www.jiuchutong.com/zhishi/294563.html 转载请保留说明!

上一篇:创建vue2项目(vue创建项目后开始写的步骤)

下一篇:Vue中二级菜单的实现(vue二级菜单的隐藏与显示)

  • vivox70pro+微信视频怎么美颜(vivox60微信视频)

    vivox70pro+微信视频怎么美颜(vivox60微信视频)

  • 小米系统更新包在哪个文件夹里(小米系统更新包会自动删除吗)

    小米系统更新包在哪个文件夹里(小米系统更新包会自动删除吗)

  • ipad录屏失败(ipad录屏失败怎么回事)

    ipad录屏失败(ipad录屏失败怎么回事)

  • 虚拟机硬盘设大了可以调小吗(虚拟机硬盘内存设置多大合适)

    虚拟机硬盘设大了可以调小吗(虚拟机硬盘内存设置多大合适)

  • 苹果x插耳机还是外放(苹果x插耳机还是外放声)

    苹果x插耳机还是外放(苹果x插耳机还是外放声)

  • 华为手机保存的视频在哪里找(华为手机保存的图片在相册找不到)

    华为手机保存的视频在哪里找(华为手机保存的图片在相册找不到)

  • 闽政通身份实名认证不通过(闽政通身份证认证不通过)

    闽政通身份实名认证不通过(闽政通身份证认证不通过)

  • 华为手机怎么限制下载软件(华为手机怎么限制广告跟踪)

    华为手机怎么限制下载软件(华为手机怎么限制广告跟踪)

  • 手机膜翘边怎么处理(手机膜翘边怎么撕下来视频)

    手机膜翘边怎么处理(手机膜翘边怎么撕下来视频)

  • oppoa73长截图在哪里找(oppoa37m长截屏)

    oppoa73长截图在哪里找(oppoa37m长截屏)

  • 抖音私信给别人怎么取消(抖音私信给别人视频作者知道吗)

    抖音私信给别人怎么取消(抖音私信给别人视频作者知道吗)

  • ps怎么修鼻子(怎么用ps把鼻子弄好看)

    ps怎么修鼻子(怎么用ps把鼻子弄好看)

  • 华为屏幕抬起怎么关闭(华为手机怎么调抬起来手机就能亮屏)

    华为屏幕抬起怎么关闭(华为手机怎么调抬起来手机就能亮屏)

  • 手机关机还能收到短信吗(手机关机还能收到微信消息吗)

    手机关机还能收到短信吗(手机关机还能收到微信消息吗)

  • 投影仪模糊怎么调整(投影仪模糊怎么搞)

    投影仪模糊怎么调整(投影仪模糊怎么搞)

  • 淘宝红包没收多久退回(淘宝红包不收会退回去吗)

    淘宝红包没收多久退回(淘宝红包不收会退回去吗)

  • 华为p30pro耳机怎么用(华为p30pro耳机怎么连接)

    华为p30pro耳机怎么用(华为p30pro耳机怎么连接)

  • 华为mate30上市日期

    华为mate30上市日期

  • nex3几倍变焦(nex3s多少倍变焦)

    nex3几倍变焦(nex3s多少倍变焦)

  • ppt如何设置超链接字体颜色(ppt如何设置超链接到文档中某一位置)

    ppt如何设置超链接字体颜色(ppt如何设置超链接到文档中某一位置)

  • 苹果如何显示蓝牙电量(苹果如何显示蓝牙)

    苹果如何显示蓝牙电量(苹果如何显示蓝牙)

  • qq怎么拉黑人不让他加你(qq怎么拉黑人,但不删除手机)

    qq怎么拉黑人不让他加你(qq怎么拉黑人,但不删除手机)

  • b站忘了密码手机也换了(b站忘了密码手机怎么登)

    b站忘了密码手机也换了(b站忘了密码手机怎么登)

  • htc如何强制关机(htc u11强制重启)

    htc如何强制关机(htc u11强制重启)

  • word 如何分节(word如何分节编号)

    word 如何分节(word如何分节编号)

  • 全民k歌保存后在哪找(全民k歌保存后还可以修改吗)

    全民k歌保存后在哪找(全民k歌保存后还可以修改吗)

  • 电话欠费不注销会怎样(电话号欠费不注销)

    电话欠费不注销会怎样(电话号欠费不注销)

  • 出口退税免税有限额吗
  • 预付账款可以开发票吗
  • 小型微利企业所得税率
  • 银行预留印鉴是公章还是财务章
  • 企业购买产品
  • 怎么查企业适用哪个会计制度教学视频
  • 减免税属于政府转移支付吗
  • 出口退税免税申报怎么报
  • 坐收坐支在会计上如何反映
  • 设备维修增值税
  • 资产减值损失负数是好是坏
  • 招标代理专家费由谁支付
  • 期货交易所手续费2023
  • 营改增对象
  • 土地使用税的计算公式举例子
  • 租赁合同印花税计税依据含税吗
  • 个人能否去税务登记
  • 利润率的计算举例
  • 大中小型企业标准划分表
  • 存货周转天数计算公式是360还是365
  • 小规模纳税人的条件
  • 建筑单位的工作岗位有哪些
  • 房产税先征后免会计处理
  • 非股东打入投资款无法返还
  • 应收票据背书转让以取得所需物资
  • 营业成本过低的原因
  • 出差补贴怎么算
  • 土地转让应交税费
  • mac应用程序安装权限在哪找
  • 年终股东利润分配方案
  • 异地增值税预交可以网上缴纳吗
  • 未开票收入怎么计算增值税
  • win7上网提速
  • 入账成本包括增值税税额吗
  • mac 怎么操作
  • 公司为实习生买保险列支什么科目?
  • 减征增值税会计处理
  • PHP/HTML混写的四种方式总结
  • unigui 小程序
  • 空调年折旧率
  • 出差餐补如何做账
  • div css页面布局
  • watch监听不到props数据改变
  • 编程主要学什么东西
  • php面向对象的机制
  • 出口退税率和进口税率的区别
  • 国家对建筑垃圾处理企业有补助吗
  • 预提费用待摊费用改为什么科目
  • 企业注销需要清产核资吗
  • 自有资金等于货币资金吗
  • 低值易耗品摊销会计处理
  • 4s店开的维修发票怎么开
  • mongodb视频教程
  • 金税四期 税友
  • 收到进账发票分录
  • 未实缴出资的股东退股
  • 社保局退回来的社保怎么入账
  • 专项应付款科目编码是多少
  • 纳税人去税务局办什么
  • 红字发票是干什么的
  • 暂估成本的两种形式
  • 低值易耗品怎么做账务处理
  • linux 详解
  • win8.1怎么关闭防火墙
  • win10系统如何创建家庭组
  • win7磁盘空间不足怎么清理文件
  • windows10 预览
  • css教程实例
  • nodejs中的模块以及作用
  • 快速掌握阅读题的技巧
  • node.js 作用
  • jquery获取元素css
  • jquery easy ui
  • 简洁实用的公司治理机制
  • android下的单元测试要配置以下说法不正确的是
  • android support包
  • jquery基础教程详解
  • android进阶书籍
  • 江西社保申报时间
  • 广东省地方税务局发票在线应用系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设