位置: 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数据分析作业)

  • 励志故事和感悟(励志故事和感悟500字)

    励志故事和感悟(励志故事和感悟500字)

  • ipadtv有什么用(ipadtv电视棒)(ipadtv怎么用)

    ipadtv有什么用(ipadtv电视棒)(ipadtv怎么用)

  • 红米note11pro怎么解锁(红米note11pro怎么样)

    红米note11pro怎么解锁(红米note11pro怎么样)

  • vivos12耳机孔在哪(vivo手机耳机孔)

    vivos12耳机孔在哪(vivo手机耳机孔)

  • 小红书可以投屏到电视吗(小红书可以投屏直播吗)

    小红书可以投屏到电视吗(小红书可以投屏直播吗)

  • 手机OTG功能是什么

    手机OTG功能是什么

  • 微信指纹支付系统出错怎么解决(微信指纹支付系统出错华为)

    微信指纹支付系统出错怎么解决(微信指纹支付系统出错华为)

  • 阵列cad快捷键(阵列cad快捷键2014)

    阵列cad快捷键(阵列cad快捷键2014)

  • 全民k歌怎么不让qq好友看到(全民k歌怎么不让某个人看到)

    全民k歌怎么不让qq好友看到(全民k歌怎么不让某个人看到)

  • qq视频出错是什么意思(qq视频播放出错)

    qq视频出错是什么意思(qq视频播放出错)

  • 收款二维码怎么弄(收款二维码怎么打印)

    收款二维码怎么弄(收款二维码怎么打印)

  • 手机号虚拟卡什么意思(虚拟卡手机卡号段)

    手机号虚拟卡什么意思(虚拟卡手机卡号段)

  • 手机显示bs是什么意思(手机左上角出现bs是表示什么意思)

    手机显示bs是什么意思(手机左上角出现bs是表示什么意思)

  • 小米9pro屏幕刷新率(小米9pro屏幕刷新率破解)

    小米9pro屏幕刷新率(小米9pro屏幕刷新率破解)

  • 联想r5和i5的区别(联想i5和r5的区别)

    联想r5和i5的区别(联想i5和r5的区别)

  • 视频怎么保存到相册(视频怎么保存到电脑)

    视频怎么保存到相册(视频怎么保存到电脑)

  • 华为手机后盖开胶是什么原因(华为手机后盖开胶能免费修)

    华为手机后盖开胶是什么原因(华为手机后盖开胶能免费修)

  • lumion怎么复制(lumion怎么复制粘贴场景里的植物)

    lumion怎么复制(lumion怎么复制粘贴场景里的植物)

  • 微信怎么关闭自动播放朋友圈视频(微信怎么关闭自己的状态)

    微信怎么关闭自动播放朋友圈视频(微信怎么关闭自己的状态)

  • airpods轻敲两下哪里(airpods轻敲两下怎么不灵)

    airpods轻敲两下哪里(airpods轻敲两下怎么不灵)

  • 华为nova5发布会地点(华为nova5z发布会)

    华为nova5发布会地点(华为nova5z发布会)

  • 电脑桌面刷新反应很慢怎么办?解决方法(电脑桌面刷新反应迟钝)

    电脑桌面刷新反应很慢怎么办?解决方法(电脑桌面刷新反应迟钝)

  • Vue项目保持用户登录状态(localStorage + vuex 刷新页面后状态依然保持)(vuex存储用户信息)

    Vue项目保持用户登录状态(localStorage + vuex 刷新页面后状态依然保持)(vuex存储用户信息)

  • Less预处理——初识Less(预处理数据的方法)

    Less预处理——初识Less(预处理数据的方法)

  • 走进chatGPT新一代机器人(《走进新时代》专栏)

    走进chatGPT新一代机器人(《走进新时代》专栏)

  • elementui中表单el-form的label如何设置宽度(element表格表单)

    elementui中表单el-form的label如何设置宽度(element表格表单)

  • 金税盘证书密码被锁死
  • 计提附加税会计凭证怎么做会计分录
  • 固定资产清理借方余额是加还是减
  • 支付外国公司费用要交税吗
  • 外资企业订单外放,员工待岗合法吗
  • 跨年主营业务成本直接冲回可以吗
  • 你觉得微信提现收费合理吗?
  • 个人所得税计算器2023
  • 专票红冲如何做账
  • 水电费没有发票怎么报销
  • 会计案例分析题万能模板
  • 外购机器设备
  • 享受固定资产一次性扣除政策
  • 子公司代发母公司人员工资
  • 政府投资农业项目
  • 房产税和城镇土地使用税
  • 华硕主板bios更新后开不了机
  • 青岛酒店式公寓出租
  • web课程设计网页
  • php编程风格规范要求
  • 代开专用发票缴纳增值税需要计提吗?
  • hp是什么代码
  • php接收数据的方法
  • php编程入门教程
  • 天堂之路歌曲
  • php rsa
  • 赠送客户商品分录
  • 项目辅材计入什么科目
  • thinkPHP5 tablib标签库自定义方法详解
  • adas数据集
  • css选择器权重
  • vuexy
  • linux部署tomcat的war包
  • 终止cat命令
  • mksquashfs命令
  • 子公司收购母公司另一子公司会计处理
  • 小规模纳税人如何界定
  • 考试费开什么发票税目
  • 织梦cms要钱吗
  • 小规模纳税人增值税税率
  • mysql底层是什么
  • centos8 mongodb
  • 资产负债表中其他应收款的计算公式
  • Windows下PostgreSQL安装图解
  • mysql存储过程传入参数
  • 中小型企业营业额和从业人数
  • 公司员工食堂买菜没发票怎么办
  • 水电费没有票怎么做账
  • 应付账款怎么处理
  • 以前多计提的税款怎么办
  • 现金日记账是会计人员根据审核后的
  • 增值税专用发票和普通发票的区别
  • 应收账款管理应该收集哪些信息
  • 长期股权投资权益法初始成本的确定
  • 什么是对公账户?
  • win7users移动其它盘
  • windows8休眠如何唤醒
  • win7系统删除文件夹怎么恢复
  • Win7旗舰版系统安装
  • 在Windows Server 2012中,管理员默认的用户名是
  • win8.1 win7
  • 微软账号重新登录
  • oeloader.exe - oeloader是什么进程 有什么用
  • Facebook Open Platform编译FAQ
  • win7无法远程桌面win10
  • linux装完显卡驱动分辨率低
  • cocos2djs
  • 刀塔ug是谁
  • Javascript 字符串拼接
  • 安卓自定义app
  • python最优化
  • python网络爬虫总结
  • javascript 面向对象
  • 申报比对不符怎么回事
  • 福建省税务报税系统官网
  • 卷式发票如何查验真伪
  • 土地评估报告书
  • 赣州买二手房限购吗
  • 郑州房子契税退税
  • 昆明国家高新技术产业开发区管理委员会官方门户网站
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设