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

  • 互联网市场推广运营全面方案(互联网市场推广是做什么的)

    互联网市场推广运营全面方案(互联网市场推广是做什么的)

  • 小米相机二维码扫一扫在哪(小米相机二维码扫描)

    小米相机二维码扫一扫在哪(小米相机二维码扫描)

  • 华为mate30手机怎么插卡(华为mate30手机怎么连接电脑)

    华为mate30手机怎么插卡(华为mate30手机怎么连接电脑)

  • 两个蓝牙耳机不能同时使用(两个蓝牙耳机不同步播放怎么办)

    两个蓝牙耳机不能同时使用(两个蓝牙耳机不同步播放怎么办)

  • 信息化与智能化的区别(信息化与智能化时代对环境设计产生哪些影响)

    信息化与智能化的区别(信息化与智能化时代对环境设计产生哪些影响)

  • airpods有时候不弹窗(AirPods有时候不会自动连手机)

    airpods有时候不弹窗(AirPods有时候不会自动连手机)

  • 微信号可以用什么符号(微信号可以用什么注册)

    微信号可以用什么符号(微信号可以用什么注册)

  • 苹果8蓝牙自动开启怎么关(苹果蓝牙自动打开是咋回事)

    苹果8蓝牙自动开启怎么关(苹果蓝牙自动打开是咋回事)

  • 在windows中,alt+tab键的作用(在Windows中,Alt+Tab)

    在windows中,alt+tab键的作用(在Windows中,Alt+Tab)

  • 笔记本外接开机键教程(笔记本外接开机键usb)

    笔记本外接开机键教程(笔记本外接开机键usb)

  • 华为手机电筒快捷键在哪里开(华为手机电筒快捷键设置)

    华为手机电筒快捷键在哪里开(华为手机电筒快捷键设置)

  • wxid是删除还是拉黑(删除微信是什么显示)

    wxid是删除还是拉黑(删除微信是什么显示)

  • 没有发朋友圈和屏蔽了有什么不同(没有发朋友圈和被屏蔽)

    没有发朋友圈和屏蔽了有什么不同(没有发朋友圈和被屏蔽)

  • 桌面亮度怎么调整(桌面亮度怎么调高)

    桌面亮度怎么调整(桌面亮度怎么调高)

  • lon-al00是华为什么型号(lonal00是华为什么型号手机什么时候上市的)

    lon-al00是华为什么型号(lonal00是华为什么型号手机什么时候上市的)

  • 手机导航没有语音播报是怎么回事(导航没有语音)

    手机导航没有语音播报是怎么回事(导航没有语音)

  • 微信删了好友怎么看聊天记录(微信删了好友怎么加回来吗)

    微信删了好友怎么看聊天记录(微信删了好友怎么加回来吗)

  • word文档目录自动索引(word文档目录自动生成有别的标题)

    word文档目录自动索引(word文档目录自动生成有别的标题)

  • 手机怎么弄密码锁屏(手机里怎么设密码)

    手机怎么弄密码锁屏(手机里怎么设密码)

  • iphone11屏幕校准怎么弄(苹果11手机屏幕校准)

    iphone11屏幕校准怎么弄(苹果11手机屏幕校准)

  • 苹果xr怎么设置抬头灯(苹果xr怎么设置铃声)

    苹果xr怎么设置抬头灯(苹果xr怎么设置铃声)

  • 苹果手机忘记解锁密码怎么办(苹果手机忘记解锁密码怎么恢复出厂设置)

    苹果手机忘记解锁密码怎么办(苹果手机忘记解锁密码怎么恢复出厂设置)

  • ipad六代叫什么(ipad六代百度百科)

    ipad六代叫什么(ipad六代百度百科)

  • wifi怎么控制时间限制(怎么控制wifi时间)

    wifi怎么控制时间限制(怎么控制wifi时间)

  • a2101是什么版本(a2107是什么版本)

    a2101是什么版本(a2107是什么版本)

  • 快手小店功能服务费多少(快手小店功能服务怎么开)

    快手小店功能服务费多少(快手小店功能服务怎么开)

  • 新浪缓存的视频在哪里(新浪视频缓存怎么存本地)

    新浪缓存的视频在哪里(新浪视频缓存怎么存本地)

  • 小米手环4和nfc的区别(小米手环4和nfc版)

    小米手环4和nfc的区别(小米手环4和nfc版)

  • mysql数据库有什么特点(MySQL数据库有什么特点)

    mysql数据库有什么特点(MySQL数据库有什么特点)

  • 矿产资源补偿费计入管理费用吗
  • 个税手续费返还政策最新规定2023
  • 进口环节消费税需要自行申报吗
  • 印花税减免优惠政策2020
  • 怎么根据实发工资算应发工资
  • 财务费用属于什么科目借贷方向
  • 费用怎么分析
  • 管理部门社保入哪个科目
  • 反写了可以重新申报吗
  • 本期准予抵减税额怎么算
  • 合伙企业分配利润需要全体合伙人同意吗
  • 应付职工薪酬期初余额在哪方
  • 零售行业会计核算方法
  • 车间领用材料应填制什么凭证
  • 银行存款的会计处理方法
  • 票货分离怎么处理
  • 以固定资产换入固定资产
  • 直接减免的增值税属于财政性资金吗
  • 出口预收货款发生的时间和报表上的时间不一样怎么办
  • 办企业房权证费用多少
  • 政策减免是什么意思
  • 外包业务账务处理
  • 有没有薪酬
  • 公司与股东的往来款涉税
  • 公司0申报怎么做账
  • 怎样升级智慧中小学版本软件
  • led显示屏的销售话术
  • 公司向股东借款合法吗
  • php+js
  • 电脑的nip是什么
  • 出售固定资产申报表收入与损益表收入不一致
  • 如何通过利润表看企业收益
  • 鹤顶兰的养殖方法和管理
  • 伏尔塔瓦河上的纤夫
  • 工程施工下的间接费用下有什么科目
  • 业务招待费用列支范围
  • php 封装
  • 民办非企业单位登记管理暂行条例
  • php学生管理系统设计报告
  • cnn三层
  • 删除命令rm rf
  • xss攻击解决方案
  • 库存现金每月终了由谁清点
  • 补缴税款账务处理
  • 支付贷款利息属于筹资活动吗
  • 汇划款项与资金清算核算内容包括哪些
  • php headers
  • python文档怎么查看
  • mongodb性能测试
  • 财政拨付注册资本金说明
  • 发工资是用借记卡还是储蓄卡
  • 公司网站设计怎么做
  • 小规模纳税人企业所得税优惠政策最新2023
  • 现金净流量的计算公式正确的有
  • 汇算清缴怎么弥补亏损怎么操作
  • 机床上的配件计入什么费用
  • 购入汽车当月需要计提折旧吗
  • 公司员工聚餐属于什么费用
  • 跨年补提城建税
  • mysql迁移方案
  • Linux下MySQL5.7.18 yum方式从卸载到安装过程图解
  • ubuntu怎么修改配置文件
  • 虚拟机vmware下载教程
  • 无法打开vmx86
  • U盘安装centos 7出现unknown chipset
  • win10系统怎么查询ip
  • web项目可以打包成jar包吗
  • unity ugui ngui
  • opengl中文教程
  • javascript有哪些类型
  • using kernel
  • dos命令 /b
  • 字符串中指定字符变换
  • unity3d开发流程
  • html、css和jquery相结合实现简单的进度条效果实例代码
  • jqgrid tree
  • bootstrap范例
  • 原生javascript
  • 辽宁地方税务网站官网
  • 陕西省电子税务局手机app
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设