位置: 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二级菜单的隐藏与显示)

  • 戴尔g5一键g模式怎么开(戴尔g15一键g模式)

    戴尔g5一键g模式怎么开(戴尔g15一键g模式)

  • 美团先用后付怎么开通(美团先用后付怎么关闭啊)

    美团先用后付怎么开通(美团先用后付怎么关闭啊)

  • 华为nova7pro有nfc的吗(华为nova7pro有nfc功能吗)

    华为nova7pro有nfc的吗(华为nova7pro有nfc功能吗)

  • 屏幕变紫(苹果手机进水屏幕变紫)

    屏幕变紫(苹果手机进水屏幕变紫)

  • 如何隐藏退款记录(怎么把退款关闭)

    如何隐藏退款记录(怎么把退款关闭)

  • 苹果数据线第四个发黑怎么处理(苹果数据线第四个触点烧坏)

    苹果数据线第四个发黑怎么处理(苹果数据线第四个触点烧坏)

  • 微信发我想你了为什么会出现星星(微信发我想你了特效)

    微信发我想你了为什么会出现星星(微信发我想你了特效)

  • wifi版的平板可以插电话卡吗(wifi版的平板可以插网卡吗)

    wifi版的平板可以插电话卡吗(wifi版的平板可以插网卡吗)

  • 支付宝亲情付能看见对方买什么东西吗(支付宝亲情付能提现吗)

    支付宝亲情付能看见对方买什么东西吗(支付宝亲情付能提现吗)

  • wps日期怎么自动填写(wps日期怎么自动填充不变)

    wps日期怎么自动填写(wps日期怎么自动填充不变)

  • iphone7摄像头跳动(iphone7plus摄像头自己跳动)

    iphone7摄像头跳动(iphone7plus摄像头自己跳动)

  • 拼多多没货发怎么处理(拼多多要是没货给买家怎么办)

    拼多多没货发怎么处理(拼多多要是没货给买家怎么办)

  • pr做的视频无法导出(pr做的视频无法播放)

    pr做的视频无法导出(pr做的视频无法播放)

  • qq等级四个皇冠之后是什么(QQ等级四个皇冠)

    qq等级四个皇冠之后是什么(QQ等级四个皇冠)

  • qq已删除照片在哪里(qq里删除的照片)

    qq已删除照片在哪里(qq里删除的照片)

  • vivo手机打电话显示视频(vivo手机打电话显示无法访问移动网络怎么办)

    vivo手机打电话显示视频(vivo手机打电话显示无法访问移动网络怎么办)

  • 怎么隐藏情侣黄钻图标(怎么隐藏情侣黄钻?)

    怎么隐藏情侣黄钻图标(怎么隐藏情侣黄钻?)

  • 安装针式打印机步骤(安装针式打印机打印测试页报错)

    安装针式打印机步骤(安装针式打印机打印测试页报错)

  • word文档删除批注(word文档删除批注后有竖线)

    word文档删除批注(word文档删除批注后有竖线)

  • 手机打字有振动怎么关(手机打字震动怎么设置关闭)

    手机打字有振动怎么关(手机打字震动怎么设置关闭)

  • iqoo和iqoopro参数对比(iqoopro与iqooneo对比参数)

    iqoo和iqoopro参数对比(iqoopro与iqooneo对比参数)

  • 个人标签是什么意思(个人标签指什么)

    个人标签是什么意思(个人标签指什么)

  • 勿扰模式微信会响吗(勿扰模式微信会显示忙线吗)

    勿扰模式微信会响吗(勿扰模式微信会显示忙线吗)

  • win10网络图标启用不了(window10 网络图标)

    win10网络图标启用不了(window10 网络图标)

  • 初级会计计划成本法例题
  • 申报所得税季初资产总额怎么填?
  • 管理费用结转本年利润,账簿怎么登
  • 公允价值变动损益增加记哪方
  • 计提工资需要纳税调整吗
  • 资产申报是什么
  • 指定会计科目是
  • 计提坏账递延所得税资产怎么算
  • 房地产企业城建税预缴可以抵扣吗
  • 建筑材料资源利用
  • 委托加工应税消费品消费税的账务处理是怎样的?
  • 个人所得税个税申报流程
  • 印花税的会计处理
  • 营改增后企业取得的不动产可以抵扣进项
  • 转让合同债权
  • 从2017年7月1日起到现在多少天
  • 税务申报零申报怎么操作
  • 印花税按次申报是什么意思
  • 蔬菜免税会计分录怎么做
  • 子公司代发母公司人员工资
  • 什么叫保理支付
  • 进项票认证超了怎么处理
  • 小规模发工资超了怎么办
  • 国内废钢贸易需要资质吗
  • iphone微信透明壁纸怎么设置
  • mac版本系统
  • 初级会计实务的心得体会
  • 个人与公司交易超过20万
  • 出口转内销会计账务处理
  • 固定资产确认的标准有哪些
  • kjournald是什么进程
  • windows11怎么添加打印机驱动
  • php论坛代码
  • 一般纳税人做账报税的整个流程详细
  • PHP:pg_fetch_row()的用法_PostgreSQL函数
  • PHP:pg_escape_identifier()的用法_PostgreSQL函数
  • php轻松入门视频教程
  • php静态页面实现搜索功能
  • 现金日记账的填制要求
  • 溢价收购股权会计处理案例
  • 高温补贴入账科目
  • 发票密码区如何调整
  • vue-axios详细介绍
  • 压缩的命令
  • yii2.0框架
  • 以前多计提的工资怎么办
  • python二叉树遍历算法
  • 开发票的盘锁了
  • 公司车辆出售要交多少税
  • 设计模式golang
  • 每个公司都要交五险一金吗
  • 航空电子客票行程单是发票吗
  • 固定资产评估减值还是升值
  • 资本公积溢价转增
  • 账务核对包括哪些内容
  • 发票额开多了多出的金额怎么处理?
  • 增值税专用发票的税率是多少啊
  • 原材料用于在建工程进项税可以抵扣吗
  • 固定资产清理账户期末有余额吗
  • 清理固定资产是什么意思
  • 账户分类的作用是什么
  • sql的理解
  • cmd shutdown命令
  • win8defender怎么打开
  • 局域网 打印机 共享
  • speedmgr.exe - speedmgr是什么进程 有什么用
  • vs2013运行
  • 如何设置电脑开机密码
  • win7任务栏显示预览窗口
  • win8系统教程
  • Eclipse引入jdk1.8
  • Node.js中的全局变量有哪些
  • unity uma
  • JavaScript中Number.NEGATIVE_INFINITY值的使用详解
  • jquery的实现原理
  • python的设置
  • jquery常用的事件绑定函数有哪些
  • 开增值税专用发票需要注意什么
  • 金税盘的操作步骤
  • 2021北京餐饮业发展趋势报告
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设