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

  • js for循环(js for循环等待1秒)

    js for循环(js for循环等待1秒)

  • 微信怎么备注电话号码(微信备注电话号怎么删除)

    微信怎么备注电话号码(微信备注电话号怎么删除)

  • 芒果vip连续包季是几个月(芒果vip连续包月什么意思)

    芒果vip连续包季是几个月(芒果vip连续包月什么意思)

  • 手机腾讯视频快进不了(手机腾讯视频快进快退怎么设置)

    手机腾讯视频快进不了(手机腾讯视频快进快退怎么设置)

  • 笔记本屏幕出现竖条纹(笔记本屏幕出现黑色横条)

    笔记本屏幕出现竖条纹(笔记本屏幕出现黑色横条)

  • 怎么避免收款码被投诉(怎么避免收款码被盗)

    怎么避免收款码被投诉(怎么避免收款码被盗)

  • 怎么@群里没说话的人(怎么@群里的一个人没有发过短信的人)

    怎么@群里没说话的人(怎么@群里的一个人没有发过短信的人)

  • iphone6s换屏教程(换苹果6s屏幕视频教程)

    iphone6s换屏教程(换苹果6s屏幕视频教程)

  • 电脑硬盘突然消失不见(电脑硬盘突然消失了怎么回事)

    电脑硬盘突然消失不见(电脑硬盘突然消失了怎么回事)

  • 计算机系统中必不可少的软件是什么(计算机系统中什么)

    计算机系统中必不可少的软件是什么(计算机系统中什么)

  • 手机三角定位原理(如何三角定位手机号)

    手机三角定位原理(如何三角定位手机号)

  • 微信加好友二维码怎么申请(微信加好友二维码给陌生人安全吗)

    微信加好友二维码怎么申请(微信加好友二维码给陌生人安全吗)

  • a2124是苹果mini5吗(ipadminia2125是什么型号)

    a2124是苹果mini5吗(ipadminia2125是什么型号)

  • 微信wap接入点怎么更换(微信wap接入点怎么打开)

    微信wap接入点怎么更换(微信wap接入点怎么打开)

  • 计算机主机包括什么(计算机主机包括哪两个部分)

    计算机主机包括什么(计算机主机包括哪两个部分)

  • ps色相饱和度的作用(ps色相饱和度的快捷键)

    ps色相饱和度的作用(ps色相饱和度的快捷键)

  • 荣耀20顶部黑色按钮是什么(荣耀20顶部黑色椭圆)

    荣耀20顶部黑色按钮是什么(荣耀20顶部黑色椭圆)

  • word手动目录怎么增加一行(word手动目录怎么设置)

    word手动目录怎么增加一行(word手动目录怎么设置)

  • 苹果11天气怎么搜索不出来(苹果11天气怎么设置到桌面小方块)

    苹果11天气怎么搜索不出来(苹果11天气怎么设置到桌面小方块)

  • 手机root后还能恢复吗(手机root后还能恢复出厂设置吗)

    手机root后还能恢复吗(手机root后还能恢复出厂设置吗)

  • 拼多多怎么看消费总额(拼多多怎么看消费总账单)

    拼多多怎么看消费总额(拼多多怎么看消费总账单)

  • iphone8广角镜头在哪里(苹果8plus广角镜头)

    iphone8广角镜头在哪里(苹果8plus广角镜头)

  • 苹果人像模式在哪(苹果人像模式在哪里打开)

    苹果人像模式在哪(苹果人像模式在哪里打开)

  • 华为平板m6操作说明(华为平板m6使用教程)

    华为平板m6操作说明(华为平板m6使用教程)

  • vivox27“幻彩夏日”什么时候上市(vivox27)

    vivox27“幻彩夏日”什么时候上市(vivox27)

  • 华为手机锁屏没有时间显示怎么办(华为手机锁屏没声音了怎么办)

    华为手机锁屏没有时间显示怎么办(华为手机锁屏没声音了怎么办)

  • 微信如何换一个号登录(微信如何换一个身份证绑定)

    微信如何换一个号登录(微信如何换一个身份证绑定)

  • 从 0 开始最详细的微信公众号接入 AI(“从零开始”)

    从 0 开始最详细的微信公众号接入 AI(“从零开始”)

  • 印花税的分录如何做
  • 已认证进项税转出怎样做账务处理
  • 应预缴税款如何计算?
  • 预提费用税务处理
  • 增值税即征即退怎么计算
  • 固定资产出售如何申报增值税
  • 季度亏损还需要计提所得税吗
  • 建材公司小规模纳税人税率
  • 营业收入就是开票不含税么
  • 一般纳税人月底增值税如何结转
  • 增值税16点税降到13点,补缴税款怎么算
  • 对公账户的钱怎么取出来才不用交税
  • 购买空调的报销单怎么写
  • 税务登记时要财务确认吗
  • 退货没有红字发票怎么办
  • 生育津贴做账法会计准则
  • 私车公用税务处理
  • 税控盘月度统计表怎么打印
  • 核定征收企业所得税的小型微利企业不得享受优惠政策
  • 营改增对运输业的影响
  • 所得税工资账载怎么算
  • 实收资本印花税最新规定
  • 自行研发专利权发生的费用全部费用化了
  • 资金占用利息怎么开票
  • 工会经费的优惠政策2020
  • 企业应收是什么意思
  • 什么级别的cpu需要水冷
  • 子公司取得投资收益
  • 园林绿化工程公司简介范文
  • html页面间传数据
  • 增值税发票超额后税率
  • 固定资产清理净损失为什么在贷方
  • 固定资产一次性折旧账务处理
  • 大前端需要掌握什么技能
  • 计算机网络拓扑结构有哪些
  • 工业 智能
  • tar -xvf命令
  • 借款凭证会计分录是什么
  • ps如何使用套锁工具剪裁图片
  • 微服务组件面试题
  • 发票整理归类汇总流程
  • 锅炉维修项目
  • 小规模纳税人应交税费科目设置
  • dedecms安装步骤
  • 企业有什么税收
  • 小微企业财政政策
  • 外贸出口备案需准备什么资料
  • 金税盘维护费发票
  • 购货方收到红字发票计入进项税转出还是进项税额负数?
  • 工程异地施工缴什么税
  • 制造费用主要核算项目
  • 一般纳税人开具3%专票的条件
  • 装饰设计 工程
  • 返利开红字发票怎么做账
  • 有会计从业资格证还有用吗
  • 收到进项发票不认证抵扣的会计分录
  • 招标场地费由谁支付
  • 固定资产清理明细账采用什么账簿
  • 外账会计做什么
  • 如何修改mysql用户名
  • 数据库汉字转拼音
  • bios密码忘记了取电池不管用
  • 扫清落叶堆怎么扫
  • Mac怎么强制关闭窗口
  • centos6.5设置网络
  • srvc32.exe - srvc32是什么进程
  • icg是什么文件
  • ubuntu20.04安装samba
  • win10升级版本后还要激活吗
  • win7 64位旗舰版电脑被唤醒之后显示器依然黑屏怎么办?
  • linux基本环境怎么选
  • bootstrap框架怎么用
  • unity 漫反射
  • ExtJS TabPanel beforeremove beforeclose使用说明
  • node connect
  • jquery开发
  • nodejs如何使用
  • 关于javascript的说法
  • 纳税人分类分级管理四个匹配
  • 丹东银行总行电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设