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

  • 个税系统更正申报可以更正几次
  • 工业企业销售收入税率
  • 借款合同印花税最新政策2023年
  • 账面成本包含增值税吗
  • 国有划拔土地房整体可以买卖吗
  • 个人所得税当月计提下月申报
  • 个税汇算清缴包括劳务报酬吗
  • 厂家试驾车和经销商试驾车
  • 企业所得税中管理费用怎么填列
  • 公司利润如何提取避税
  • 职工福利基金提取规定
  • 注册资本未到位转让股权
  • 公司租用房产税如何征收
  • 其他非流动负债包括哪些科目
  • 增值税留抵还需要交税吗
  • 个人独资企业免税额度
  • 仓储租赁增值税
  • 日用品专用发票可以抵税嘛
  • 餐饮消费,碰到商家不愿意开发票怎么办?
  • 高新技术企业资助
  • 计算企业所得税的公式
  • 购销合同印花税税率
  • 加油可以吗
  • 收到苗木发票怎么做账
  • 出口视同内销的账务处理?
  • 公司转账到支付宝有记录么
  • php输出mysql查询结果
  • php date_diff
  • 商业成本结转会计分录
  • 企业发放职工薪酬的账务处理例子
  • 确认收入的必要条件
  • 公司中奖要交税吗
  • 商贸企业国民经济行业代码
  • 新西兰南岛西南部
  • 克扣拆迁款
  • vue更改数据
  • nodejs如何与前端交互
  • lxml&xpath一站式教学
  • 过来人告诉你:女人最珍贵的三种东西,舍得给你说明爱你
  • javascript数据类型分为哪两类
  • 金额太小不给开发票
  • 二手固定资产怎么折旧
  • 小企业的准备阶段是创办企业吗
  • echarts怎么引入
  • 零申报失败什么原因
  • 如何设置固定资产累计折旧增值税进项税额缺损入账科目
  • 存货的采购成本不包括
  • 清卡和抄报税是什么意思
  • 可转债中签后怎么看涨跌
  • 企业购买商场的资本金要求是多少
  • 长期待摊费用进项税分录
  • 科目余额表如何核对
  • 增值税农产品免税
  • 高新技术企业福利
  • 旅游应当提示参加团队旅游的旅游者按照规定购买什么
  • 教育行业会计科目表
  • 仓库做账应该注意些哪些事项
  • 建账时必须输入的内容有哪些
  • mysql常见优化手段
  • arp攻击的原理及防范
  • Win10 RedStone 2预览版14936快速版开始推送
  • xp系统文件夹选项在哪
  • linux 卸载 mysql
  • win10系统自带虚拟机无法启
  • cocos-creator
  • unity3d4个脚本
  • unity3d摄像头
  • perl中\s+
  • 短信发送器
  • node 开发
  • 蛋疼的生活歌曲
  • js中生成随机数
  • 代码实现观察者模式
  • 四川纳税互动平台app
  • 企业所得税法中所称有关的支出是指
  • 济南市中区税务局办税大厅
  • 登录上海电子税务局找不到税务数字帐户
  • 个人所得税如何办理退税
  • 跨省开税票
  • 医务人员抗疫补助发放标准最新
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设