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

  • wps怎么删除多页内容(wps怎么删除多页word)

    wps怎么删除多页内容(wps怎么删除多页word)

  • 运算器中包含什么部件(运算器中包含什么)

    运算器中包含什么部件(运算器中包含什么)

  • 中转站剩余容量不足(中转站剩余空间不足怎么办)

    中转站剩余容量不足(中转站剩余空间不足怎么办)

  • 微信流汗的表情代表什么意思(微信流汗的表情什么意思)

    微信流汗的表情代表什么意思(微信流汗的表情什么意思)

  • 华为p40pro要贴膜吗(华为p40pro要贴膜手感)

    华为p40pro要贴膜吗(华为p40pro要贴膜手感)

  • 华为手机怎么单手模式切换(华为手机怎么单独设置一个人响铃)

    华为手机怎么单手模式切换(华为手机怎么单独设置一个人响铃)

  • 文件重命名后怎么恢复(文件重命名后怎么恢复原来的文件名快捷键)

    文件重命名后怎么恢复(文件重命名后怎么恢复原来的文件名快捷键)

  • 手机软件闪退怎么修复?原因?(手机软件闪退怎么弄)

    手机软件闪退怎么修复?原因?(手机软件闪退怎么弄)

  • p40的相机多少倍(p40相机多少倍变焦)

    p40的相机多少倍(p40相机多少倍变焦)

  • 电脑有红外线功能吗(电脑有红外线功能能控制空调吗)

    电脑有红外线功能吗(电脑有红外线功能能控制空调吗)

  • 小度链接不上网络怎么办(小度连接不上网)

    小度链接不上网络怎么办(小度连接不上网)

  • 网络卡顿是路由器的原因吗(网络卡顿是路由器的问题还是网络的问题)

    网络卡顿是路由器的原因吗(网络卡顿是路由器的问题还是网络的问题)

  • 笔记本电脑配件有什么(笔记本电脑配件清单)

    笔记本电脑配件有什么(笔记本电脑配件清单)

  • 怎么把电视剧下载到手机本地(怎么把电视剧下到网盘)

    怎么把电视剧下载到手机本地(怎么把电视剧下到网盘)

  • 红米note8怎么开启通话录音(红米note8开不了机了怎么办)

    红米note8怎么开启通话录音(红米note8开不了机了怎么办)

  • 智能手环怎么开不了机(智能手环怎么开机)

    智能手环怎么开不了机(智能手环怎么开机)

  • 充电线3a5a哪个充电快(充电线3a好还是5a好)

    充电线3a5a哪个充电快(充电线3a好还是5a好)

  • 苹果扩容机有什么影响(苹果扩容机不值钱吗)

    苹果扩容机有什么影响(苹果扩容机不值钱吗)

  • 联想电脑pin码是什么(联想电脑pin码是什么时候设置的)

    联想电脑pin码是什么(联想电脑pin码是什么时候设置的)

  • 拼多多怎么关闭自动开团(拼多多怎么关闭隐私号码)

    拼多多怎么关闭自动开团(拼多多怎么关闭隐私号码)

  • 美颜相机录视频怎么延长(美颜相机录视频没声音为什么)

    美颜相机录视频怎么延长(美颜相机录视频没声音为什么)

  • 耳机话筒坏了怎么修(耳机话筒坏了其余都好着)

    耳机话筒坏了怎么修(耳机话筒坏了其余都好着)

  • 苹果8p信号不好怎么弄(苹果8信号不好怎么解决)

    苹果8p信号不好怎么弄(苹果8信号不好怎么解决)

  • 虚拟7.1和物理7.1区别(虚拟7.1和物理7.1耳机区别很大吗)

    虚拟7.1和物理7.1区别(虚拟7.1和物理7.1耳机区别很大吗)

  • uniapp Android 原生插件开发(Module 扩展为例·2022)(uniapp 安卓原生)

    uniapp Android 原生插件开发(Module 扩展为例·2022)(uniapp 安卓原生)

  • 2022年最新魔改海螺模板版苹果CMSV10免授权带后台-OK源码破解(魔改是啥)

    2022年最新魔改海螺模板版苹果CMSV10免授权带后台-OK源码破解(魔改是啥)

  • 劳务公司怎么交税,都有哪些税
  • 发货过程
  • 免税申报表里的免税销售额是不含税
  • 金税四期什么时候全国运行
  • 收取职工工会会费收据
  • 工业土地摊销年限最新规定
  • 银行对账单放前面还是放后面
  • 企业购买电话充值卡的分录
  • 红冲发票跨年怎么操作
  • 工程款开票后增值税怎么做分录?
  • 资本公积科目余额能出现小数吗
  • 民办非企业单位可以盈利吗
  • 苗木销售免企业所得税吗
  • 投资收益是否缴纳印花税
  • 借款利息可以入账吗
  • 金蝶哪个版本最好
  • 进口退运货物基本流程
  • 医院医保统筹支付后还能报销吗
  • 取消票种核定需什么手续
  • 单位代收员工退休金会计分录
  • 办公室房租计入什么科目
  • 先开票后预缴能退吗
  • 劳务公司差额征收税率是多少
  • 安全生产费怎么算
  • 公司个人垫付的费用会计分录
  • 有进项没销项怎么处理,可以结转成本吗
  • 只有收据没有发票可以保修吗
  • 挂靠建筑公司没有票据怎么做账?
  • vue前端页面设计
  • php7数据库操作
  • 补缴房产税和土地使用税会计分录
  • php7.4配置
  • 销售多余材料的成本
  • 数据模型 excel
  • 厂房没租出去要交税吗
  • php如何解析json串内的数组
  • 软件企业会计账务处理
  • 税金及附加算什么
  • mysql使用ssl连接
  • 采购商品没有进账怎么做账
  • 采购货物没有发票开出去有发票有什么风险
  • 售后回租融资租赁会计处理
  • 处置子公司如何纳税
  • 中标服务费需要签合同吗
  • 纳税申报个税如何申报
  • 老板让我做分公司负责人能接受么
  • 无法支付的应付账款为什么计入营业外支出
  • 简易征收需要勾选认证吗
  • 银行开户的费用计入什么科目
  • 建筑企业外经证需要准备什么资料
  • 工会经费购买的固定资产处置
  • 销售货物多收款怎么处理
  • 现金股利征收个人所得税吗
  • 发票丢了能做账吗
  • 一般纳税人弱电包工包料怎么开票
  • 旅游饮食服务企业财务会计制度
  • 查询存储过程中的文件
  • sql中cursor是什么意思
  • mysql varchar2
  • mysql隔离级别详解
  • 完美解决MySQL通过localhost无法连接数据库的问题
  • apache not found
  • centos6.5怎么安装
  • win10移动版和win10区别
  • Win10手机版校
  • win10标准用户权限
  • js时间倒计时定时器怎么弄
  • node session
  • vue组件互相嵌套
  • node.js怎么用
  • jquery的实现原理
  • jquery入门
  • 黑马程序员培训怎样
  • javascript巧用eval函数组装表单输入项为json对象的方法
  • 国家 税务 总局
  • 云南省地方税务局公告2017年第2号
  • 出口退税是哪个环节交的
  • 北京市地区代码是多少
  • 锦江区税务局搬迁新地址
  • 孝感契税缴纳标准
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设