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

  • 怎么开启苹果手机免打扰模式(怎么开启苹果手机siri唤醒)

    怎么开启苹果手机免打扰模式(怎么开启苹果手机siri唤醒)

  • 红米note11几个摄像头(红米note11主摄型号)

    红米note11几个摄像头(红米note11主摄型号)

  • 企业微信可以重新实名认证吗(企业微信可以重播吗)

    企业微信可以重新实名认证吗(企业微信可以重播吗)

  • 怎么看电脑配置好坏(怎么看电脑配置高不高)

    怎么看电脑配置好坏(怎么看电脑配置高不高)

  • 华为荣耀10有没有计步器(华为荣耀10有没有红外线功能)

    华为荣耀10有没有计步器(华为荣耀10有没有红外线功能)

  • 小米怎么设置允许上层显示(小米怎么设置允许用流量下载)

    小米怎么设置允许上层显示(小米怎么设置允许用流量下载)

  • 手机主屏尺寸是指那(手机主屏尺寸是怎么测量)

    手机主屏尺寸是指那(手机主屏尺寸是怎么测量)

  • iphone11刷新率(iphone11刷新率在哪调)

    iphone11刷新率(iphone11刷新率在哪调)

  • 网线和电线干扰严重吗(网线和电线干扰解决办法视频)

    网线和电线干扰严重吗(网线和电线干扰解决办法视频)

  • 微信发我想你了为什么会出现星星(微信发我想你了特效)

    微信发我想你了为什么会出现星星(微信发我想你了特效)

  • 华为常驻应用怎么设置(华为常驻应用怎么删除)

    华为常驻应用怎么设置(华为常驻应用怎么删除)

  • 红米gps的修复教程(红米gps设置在哪里设置)

    红米gps的修复教程(红米gps设置在哪里设置)

  • 粘贴图片到文档为什么显示不全(粘贴图片到word)

    粘贴图片到文档为什么显示不全(粘贴图片到word)

  • qq情侣标识别人能看见吗(扣扣情侣标识别人能看到吗)

    qq情侣标识别人能看见吗(扣扣情侣标识别人能看到吗)

  • 华为p20有没有无线充电功能(华为p20有没有无线反向充电怎么弄)

    华为p20有没有无线充电功能(华为p20有没有无线反向充电怎么弄)

  • 如何设置键盘背景(如何设置键盘背景华为)

    如何设置键盘背景(如何设置键盘背景华为)

  • 小米9pro应用全屏显示怎么设置(小米9怎么关掉应用推荐)

    小米9pro应用全屏显示怎么设置(小米9怎么关掉应用推荐)

  • 小米9怎么开启放大手势(小米9怎么开启无线充电)

    小米9怎么开启放大手势(小米9怎么开启无线充电)

  • 荣耀20如何卸载软件(荣耀如何卸载智慧助手)

    荣耀20如何卸载软件(荣耀如何卸载智慧助手)

  • 打开抖音网络不可用怎么回事儿(抖音网络打不开是怎么回事)

    打开抖音网络不可用怎么回事儿(抖音网络打不开是怎么回事)

  • xr单卡还是双卡(iphone14pro单卡还是双卡)

    xr单卡还是双卡(iphone14pro单卡还是双卡)

  • 大疆御1和2区别(大疆御1和2参数对比)

    大疆御1和2区别(大疆御1和2参数对比)

  • 华为bacal00是什么型号(华为手机bacal00是什么型号)

    华为bacal00是什么型号(华为手机bacal00是什么型号)

  • Win11硬件加速gpu计划在哪里?Win11硬件加速gpu计划关闭方法(win11硬件加速gpu计划怎么关)

    Win11硬件加速gpu计划在哪里?Win11硬件加速gpu计划关闭方法(win11硬件加速gpu计划怎么关)

  • c语言中使用指向结构指针的原因(c语言中使用指针的好处)

    c语言中使用指向结构指针的原因(c语言中使用指针的好处)

  • 增值税发票查询网络异常
  • 企业对外投资收益税收
  • 营业收入是不是利润
  • 税控盘费用抵扣
  • 退回投资款怎么做账
  • 房地产股权收购案例
  • 违反账簿、凭证管理要承担什么法律责任
  • 公司收到银行转账会计分录
  • 车辆挂靠收取管理费怎么做账
  • 附注的主要作用
  • 没有业务来往可以报税吗
  • 营改增后机械设备租赁需缴纳什么税?
  • 加计扣除农产品包括哪些
  • 个人所得税申报方式选哪个比较好
  • 宽带合同要交印花税吗
  • 一次性发放奖金个税怎么计算
  • 专利技术使用权转让属于特许权使用费
  • 人均营收指标
  • 运费发票备注栏样板
  • 企业高管需要什么证书
  • 网银企业证书年费入哪个科目
  • 给员工租房会承担什么责任
  • 收到招标公司开的发票
  • Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
  • PHP:mcrypt_module_self_test()的用法_Mcrypt函数
  • 农村个体户需要报税吗
  • 安装winsock
  • 海关发票丢失怎么处理
  • 福利费可以抵扣进项吗?
  • 债务重组利得计入其他收益还是营业外收入
  • 在php中使用mysql
  • 基建账并账规定
  • python查看type
  • php字符串比较函数怎么写
  • 网络销售平台优势和劣势
  • 法定的盈余公积是什么
  • 转出未交增值税借方余额表示什么
  • 保险费计入固定资产原值吗
  • 织梦cms要钱吗
  • 企业所得税放入什么科目
  • 送货单和收款收据的区别
  • SQL Sever 2005 Express 安装失败解决办法
  • 出口运保费是什么费用
  • 企业福利费账务处理
  • 应交税费核算范围
  • 如何查询继续教育
  • 临时售楼部招牌效果图
  • 事业单位会计的特点
  • 施工企业简易计税的依据
  • 不开票收入怎么做账
  • 加盟创业成功案例分析
  • 领导出差差旅费怎么报销
  • 辅助生产成本如何结转
  • mysql数据库主从数据不一致
  • 连接mysql数据的四要素
  • ubuntu20.10
  • Windows计划任务 不管是否登录 没有窗口
  • window10玩英雄联盟卡顿怎么办
  • linux运维常用命令汇总
  • linux如何进行命令操作
  • win8怎么到win7
  • javascript的代码写在哪里
  • 表单验证element
  • jquery实现图片懒加载
  • UNIX sh(Bourne Shell)脚本里面使用数组的两种方法
  • Windows下自动备份MongoDB的批处理脚本
  • unity中time.time
  • bootstrap基础教程
  • python查找字符串中指定字符的个数
  • python2编码问题
  • jQuery ajax方法传递中文时出现中文乱码的解决方法
  • js的span标签
  • 退休个人所得税专项附加扣除减免
  • 发票开票人一定要真实姓名吗
  • 12366纳税服务热线工作时间
  • 房屋契税2013年收费标准
  • 马云交了多少税费
  • 下载国税网上办税服务厅
  • 2020各省旅游
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设