位置: IT常识 - 正文

ES6 - Promise详解及用法(es6promise的理解)

编辑:rootadmin
ES6 - Promise详解及用法 一、什么是Promise

推荐整理分享ES6 - Promise详解及用法(es6promise的理解),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:es6 promise await,es6介绍,es6 promise作用,es6 promise.all,es6 promise作用,es6 promise.all,es6 promise then,es6 promise then,内容如对您有帮助,希望把文章链接给更多的朋友!

Promise是ES6异步编程的一种解决方案(目前最先进的解决方案是async和await的搭配(ES8),但是它们是基于promise的),从语法上讲,Promise是一个对象或者说是构造函数,用来封装异步操作并可以获取其成功或失败的结果。

二、为什么要使用promise

最重要也是最主要的一个场景就是ajax和axios请求。通俗来说,由于网速的不同,可能你得到返回值的时间也是不同的,但是我们下一步要执行的代码依赖于上一次请求返回值,这个时候我们就需要等待,结果出来了之后才知道怎么样继续下去。 

三、promise的好处

防止出现回调地狱;

提高代码的可读性;

像同步操作那样去执行异步操作

 四、promise的三种状态

1.pending: 等待中,或者进行中,表示还没有得到结果 2.resolved(Fulfilled): 已经完成,表示得到了我们想要的结果,可以继续往下执行 3.rejected: 也表示得到结果,但是由于结果并非我们所愿,因此拒绝执行 

<script> function fn(flag) { //构造函数 return new Promise(function(resolve, reject) { if (flag === true) { resolve('promise状态为成功!') }; if (flag === false) { reject('promise状态失败!') }; }) } console.log(fn(true)); </script>五、promise的用法 

1.promise的实例方法

ES6 - Promise详解及用法(es6promise的理解)

①then()      得到异步任务的正确结果

②catch()    获取异常信息 ③finally()   成功与否都会执行(尚且不是正式标准)  注意:then方法可以接受两个函数,第一个函数为promise状态为成功的回调函数,第二个函数为promise状态为失败的回调函数(可以不写,一般用catch方法捕获promise状态为失败的异常信息)

<script> let pro = new Promise((resolve, reject) => { if (Math.random() > 0.5) { resolve("i'm resolve"); } else { reject("i'm reject"); } }) pro.then((res) => { console.log(res); }).catch((err) => { console.log(err); })</script>

案例

    目标:拿到关于 狙击手 电影的描述

    过程:

    1.先登录

    2.请求 导演信息 找到张导的id

    3.请求 电影信息 找到描述 

<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js"></script><script> // 1.登录 // let myLogin = () => new Promise() function myLogin() { return new Promise((resolve, reject) => { $.ajax({ type: 'get', url: '../json/login.json', success(res) { resolve(res); }, error(err) { reject(err); } }) }) } // 2.导演列表 function myDirector() { return new Promise((resolve, reject) => { $.ajax({ type: 'get', url: '../json/director.json', success(res) { resolve(res); }, error(err) { reject(err); } }) }) } // 3.电影信息 function myFilm(id) { return new Promise((resolve, reject) => { $.ajax({ type: 'get', url: '../json/' + id + '.json', success(res) { resolve(res); }, error(err) { reject(err); } }) }) } myLogin().then(res => { return myDirector(); }).then(res => { return myFilm(3); }).then(res => { console.log(res); }).catch(err => { console.log(err); })</script> 2.promise的对象方法(p1,p2,p3为promise的实例对象)

①Promise.all()  并发处理多个异步任务,所有任务都执行完成才能得到结果

Promise.all( [p1,p2,p3] ) .then ( (result) => { consoleog (result)})

②Promise.race()  并发处理多个异步任务,只要有一个任务完成就能得到结果

Promise.race ( [p1,p2,p3] ).then ( (result)=>{ console. log (result)})六、总结

1.promise其实就是一个对象或者说是构造函数 2.promise的出现(es6) 就是解决异步编程和回调地狱等问题,async和await的出现(ES8)就是基于promise的一种解决异步编程的终极解决方案(简化代码等等) 3.在前端中,ajax和axios都会用到异步编程,axios更是基于promise的,所以一定要掌握        promise以及用async和await搭配promise的使用

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

上一篇:PyTorch学习系列教程:何为Tensor?(pytorch如何学)

下一篇:大学生问AI(大学生问卷spss数据分析作业)

  • 苹果11黑屏的原因(苹果11黑屏的原因有哪些)

    苹果11黑屏的原因(苹果11黑屏的原因有哪些)

  • win7打印机共享怎么设置(win7打印机共享0x0000709怎么解决)

    win7打印机共享怎么设置(win7打印机共享0x0000709怎么解决)

  • win7怎么设置自动关机(win7怎么设置自动锁屏时间)

    win7怎么设置自动关机(win7怎么设置自动锁屏时间)

  • 家里拉网线怎么弄(家里怎么拉网线)

    家里拉网线怎么弄(家里怎么拉网线)

  • 爱奇艺会员怎么买一个月(爱奇艺会员怎么分享给另一个人)

    爱奇艺会员怎么买一个月(爱奇艺会员怎么分享给另一个人)

  • 什么是vnp??(什么是肺结节好治疗吗)

    什么是vnp??(什么是肺结节好治疗吗)

  • 拼多多怎么关闭关注(拼多多怎么关闭免密支付)

    拼多多怎么关闭关注(拼多多怎么关闭免密支付)

  • 手机hb在哪里能关掉(手机上的h)

    手机hb在哪里能关掉(手机上的h)

  • 绿厂手机是什么牌子(手机绿坝)

    绿厂手机是什么牌子(手机绿坝)

  • 手机一闪一闪是内屏坏了吗(手机一闪一闪是什么原因Vivo)

    手机一闪一闪是内屏坏了吗(手机一闪一闪是什么原因Vivo)

  • 硬盘可以装几个(电脑硬盘可以装几个)

    硬盘可以装几个(电脑硬盘可以装几个)

  • 荣耀20s有没有红外线(荣耀20s有没有红外遥控器)

    荣耀20s有没有红外线(荣耀20s有没有红外遥控器)

  • 喜马拉雅听不了怎么回事(喜马拉雅听不了央广)

    喜马拉雅听不了怎么回事(喜马拉雅听不了央广)

  • 微信拉黑再恢复对方知道吗(微信拉黑再恢复能收到拒收的消息吗)

    微信拉黑再恢复对方知道吗(微信拉黑再恢复能收到拒收的消息吗)

  • qq群大演说家怎么来的(有没有演讲群)

    qq群大演说家怎么来的(有没有演讲群)

  • 快手的黑名单有什么用处(快手的黑名单有数量限制吗)

    快手的黑名单有什么用处(快手的黑名单有数量限制吗)

  • 电脑hdmi接口有什么用(电脑hdmi接口有电)

    电脑hdmi接口有什么用(电脑hdmi接口有电)

  • 红米note7通话声音小怎么办(红米note7通话声音太小)

    红米note7通话声音小怎么办(红米note7通话声音太小)

  • 座机怎么调来电铃声(座机怎么调来电音量大小设置)

    座机怎么调来电铃声(座机怎么调来电音量大小设置)

  • 发朋友圈如何不折叠(发朋友圈如何不配图)

    发朋友圈如何不折叠(发朋友圈如何不配图)

  • 尼康z6与z7区别(尼康z7和z6ii)

    尼康z6与z7区别(尼康z7和z6ii)

  • 苹果x信用授权在哪里(苹果手机信用授权)

    苹果x信用授权在哪里(苹果手机信用授权)

  • 打印机名称在哪里找(打印机名称在哪里修改)

    打印机名称在哪里找(打印机名称在哪里修改)

  • 小度智能音箱能打电话吗(小度智能音箱能控制空调吗)

    小度智能音箱能打电话吗(小度智能音箱能控制空调吗)

  • 绑定微信的手机号不用了怎么办(绑定微信的手机号没用了,密码也忘了怎么办)

    绑定微信的手机号不用了怎么办(绑定微信的手机号没用了,密码也忘了怎么办)

  • 微信小程序计算器(含源码)、含js精确运算代码(微信小程序计算器代码)

    微信小程序计算器(含源码)、含js精确运算代码(微信小程序计算器代码)

  • 山东省增值税发票勾选认证平台
  • 外籍人员可以在中国工作吗
  • 永久性差异什么是暂时性差异
  • 固定资产累计折旧是什么科目
  • 资产负债表固定资产项目包括哪些
  • 百望云票收费吗
  • 职工的补助金需交税吗
  • 空白增值税专用发票丢失罚款
  • 公益性捐赠税前扣除资格有效期
  • 有外经证的计税收入怎么算?
  • 库存商品期末要结转吗
  • 个人转让住宅要交哪些税
  • 营业外支出可以扣除吗
  • 企业车辆办理违章
  • 施工企业直接费间接费怎么算
  • 雇主责任险发票的项目名称怎么写
  • 涉农产品税率
  • 总公司出货分公司怎么办
  • 优惠购房差价收益是否缴纳个人所得税?
  • 物业公司水费差额征税不备案
  • 同城提入业务包括
  • 企业微信收款的钱怎么提取出来
  • 外购无形资产如何摊销
  • 会计实操的重要性有哪些
  • mac死机什么原因
  • Win7系统Syswow64文件夹是什么及能否删除的相关内
  • 网页老是自己跳出来
  • win11任务栏白色卡死
  • 硬盘分区的原则主要有哪些
  • 结转成本,成本多了还是少了
  • 产品分仓
  • 退回已修改是什么意思
  • Zend Framework+smarty用法实例详解
  • 税款差0.05是怎么处理
  • logparser命令
  • php jsondecode
  • php源码 数据库
  • 命令行 压缩
  • 不良品扣款应入哪个科目
  • 本期应补退税额和期末未缴税额
  • 软件公司股权
  • 公司代个人缴纳社保,但不发工资和交税
  • 企业所得税成本费用一定要发票的吗
  • 以前年度亏损要调整吗
  • 建筑企业开票都要交税吗
  • 筹建期发生的费用会计分录
  • 固定资产折旧加计扣除最新政策
  • 物业管理费专票税率是多少
  • 计提固定资产折旧账务处理
  • 承租人收到融资租赁款
  • 建筑业简易征收的条件
  • 收到财付通的短信通知
  • 暂估入账错误了怎么办
  • 无形资产原值变更 摊销
  • 固定资产清理产生的收入计入
  • 律师的行业
  • 基本生产成本科目应该按成本计算对象
  • 营改增后建筑行业增值税税率
  • 一般纳税人注销公司流程2023
  • 个人账号可以向对公账户转账吗
  • 设置账簿的依据
  • mysql密码怎么找回
  • mysql免安装版本
  • windows vista界面
  • 苹果电脑支持的u盘格式
  • win10系统怎么修改字体大小
  • xp系统如何共享文件夹怎么弄
  • win10系统怎么快速启动
  • opengl绘制地面
  • pycharm如何使用
  • 分享一下什么
  • javascript中获取字符串长度
  • javascript基础书
  • python 遍历数组
  • 辽宁省国家税务局网上申报
  • 四川省国税局一处处长
  • 开票地税怎么算的
  • 对外支付税务备案表网上核验
  • 如何在国税电子税务平台为员工办理定制社保卡
  • 重庆路桥价值
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设