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

  • 苹果12怎么识别图片文字(苹果12怎么识别抖音歌曲)

    苹果12怎么识别图片文字(苹果12怎么识别抖音歌曲)

  • vivo手机桌面时间挂件如何设置(vivo手机桌面时间颜色怎么改)

    vivo手机桌面时间挂件如何设置(vivo手机桌面时间颜色怎么改)

  • 钉钉分屏会记录时间吗(钉钉分屏能看到吗)

    钉钉分屏会记录时间吗(钉钉分屏能看到吗)

  • 关系运算符有哪些(关系运算符有哪些?逻辑运算符有哪些?各有何规律?)

    关系运算符有哪些(关系运算符有哪些?逻辑运算符有哪些?各有何规律?)

  • cpu风扇弹簧螺丝拧不上(cpu风扇弹簧螺丝怎么拆)

    cpu风扇弹簧螺丝拧不上(cpu风扇弹簧螺丝怎么拆)

  • 为什么有的淘宝订单没有交易快照(为什么有的淘宝店铺买完东西就消失了)

    为什么有的淘宝订单没有交易快照(为什么有的淘宝店铺买完东西就消失了)

  • 手机照片太多占内存怎么办呢(手机照片太多占空间吗)

    手机照片太多占内存怎么办呢(手机照片太多占空间吗)

  • 苹果商店退款多久能到账(苹果商店退款多久到账户)

    苹果商店退款多久能到账(苹果商店退款多久到账户)

  • 电脑显示正在关机却一直关不掉,怎么办?(电脑显示正在关闭程序并关机点取消后电脑图标怎么办)

    电脑显示正在关机却一直关不掉,怎么办?(电脑显示正在关闭程序并关机点取消后电脑图标怎么办)

  • 微信视频超过5分钟怎么发送给朋友(微信视频超过5分钟怎么发给个人)

    微信视频超过5分钟怎么发送给朋友(微信视频超过5分钟怎么发给个人)

  • med-al20是什么型号(med-al29)

    med-al20是什么型号(med-al29)

  • 网页一般又称作什么(网页一般又称作什么网站)

    网页一般又称作什么(网页一般又称作什么网站)

  • 电脑黑屏有英文字母怎么办(电脑黑屏有英文字母一直跳动)

    电脑黑屏有英文字母怎么办(电脑黑屏有英文字母一直跳动)

  • 苹果xsmax摔了内部会松动吗(苹果xsmax摔坏的图片真实)

    苹果xsmax摔了内部会松动吗(苹果xsmax摔坏的图片真实)

  • 如果对方把你电话拉黑短信能发吗(如果对方把你电话拉黑了怎么办)

    如果对方把你电话拉黑短信能发吗(如果对方把你电话拉黑了怎么办)

  • 为什么qq好友的备注改不了(为什么qq好友的聊天框突然不见了)

    为什么qq好友的备注改不了(为什么qq好友的聊天框突然不见了)

  • word怎么设置行数和字数(word怎么设置行距20磅)

    word怎么设置行数和字数(word怎么设置行距20磅)

  • vivos5怎么返回到桌面(vivoy52s手机怎么返回)

    vivos5怎么返回到桌面(vivoy52s手机怎么返回)

  • 苹果11发信息怎么换卡(苹果11发信息怎么换行)

    苹果11发信息怎么换卡(苹果11发信息怎么换行)

  • 抖音拉黑能收到艾特吗(抖音拉黑能收到对方评论吗)

    抖音拉黑能收到艾特吗(抖音拉黑能收到对方评论吗)

  • 恋爱记能解除关系么(恋爱记解除关系后怎么恢复)

    恋爱记能解除关系么(恋爱记解除关系后怎么恢复)

  • oppoReno后的凸点是什么功能(opporeno后盖的小圆点是什么)

    oppoReno后的凸点是什么功能(opporeno后盖的小圆点是什么)

  • 怎么把腾讯视频的视频保存到相册(怎么把腾讯视频下载的视频保存到u盘)

    怎么把腾讯视频的视频保存到相册(怎么把腾讯视频下载的视频保存到u盘)

  • 美团如何删除最近常买(美团如何删除最近访问地址)

    美团如何删除最近常买(美团如何删除最近访问地址)

  • 2016051是小米几(2016051是小米什么型号)

    2016051是小米几(2016051是小米什么型号)

  • dhcp怎么设置(小米路由器dhcp怎么设置)

    dhcp怎么设置(小米路由器dhcp怎么设置)

  • 移动网速测试的方法是什么?(移动手机网速测试)

    移动网速测试的方法是什么?(移动手机网速测试)

  • 安装win7系统的方法是什么?(安装win7系统的硬件要求)

    安装win7系统的方法是什么?(安装win7系统的硬件要求)

  • 当月只有进项税额月末怎么办
  • 资金账簿印花税每年都要交吗?
  • 政府转让土地使用权
  • 收取商标权使用费分录
  • 应交税费应交增值税转出未交增值税是什么意思
  • 预付账款和应付账款的区别
  • 出口托收业务
  • 会计核算是否健全 填错了有影响吗
  • 公司与公司之间借款需要交税吗
  • 利润表第二季度本期金额填4-6月还是1-6月数
  • 金蝶未结账是否可以重新起账
  • 工会经费计入现金流量表哪项
  • 佣金的发票
  • 建筑工程免税项目
  • 土地使用税什么意思
  • 企业应收票据贴现给银行所获得的现金计入现金流量表
  • 预缴增值税 已交税金
  • 已认证发票退回的流程
  • 残保金是所有企业都交么
  • 中国银行结算包括哪些内容?怎么做会计分录?
  • 购买软件能直接用吗
  • 银行卡收单机构外包业务管理指引
  • 公司买车可以抵什么税
  • 开票方与受票方的区别
  • 减免税款为什么在借方
  • 远程清卡失败f50004
  • 零申报的企业资产负债表
  • 房企的预收账款是什么
  • 卸载了驱动程序会怎么样
  • backupnotify.exe是什么文件的进程 backupnotify进程安全吗
  • live updater
  • mysql如果不存在就创建表
  • PHP:is_dir()的用法_Filesystem函数
  • 验签失败发票如何撤销
  • 固定资产没有发票可以计提折旧吗
  • 工会福利如何做账
  • 销售折让销货方式有哪些
  • html的标签大全
  • pgadmin配置
  • phpstudy ftp怎么用
  • 发票融资会计处理
  • get请求有哪些
  • 销售房产收取预算费用
  • 捐赠收入要交所得税吗
  • 出口结汇有哪些常用方法?
  • 自产和外购用于赠送
  • 所得税费用影响企业营业利润吗
  • 管理费用的会计要素
  • 期末留抵税额怎么填报表
  • 年收益率与年化利率是一样?
  • 坏账准备的核算方法
  • 一般纳税人增值税税率
  • 土地使用税和房产税是一起的吗
  • 其他债权投资有没有减值准备
  • 什么是企业管理的基础工作
  • 职工教育经费如何列支
  • 天猫佣金会返还吗
  • 长期待摊费用的摊销期限应该是
  • 速动比率多少合适 视频
  • 营业执照代办需要什么手续
  • 结账时如何划线进去
  • 企业如何建账做账
  • mysql经典书
  • mac的mysql安装
  • ubuntu开启图形化界面
  • Omniserv.exe - Omniserv是什么进程 有什么用
  • linux远程gui
  • win8应用错误怎么办
  • vsftpd怎么配置
  • js导出excel文件前端插件
  • jquery实现页面切换
  • javascript的
  • python第三方库文档怎么看
  • 时间戳的差值
  • androidstudio快捷生成代码
  • javascript详细介绍
  • 2000元工资交多少党费
  • 贸易公司税收政策
  • 工商变更信息如何在网上打印?
  • 新疆地方税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设