Promise的使用方法[通俗易懂]

Promise的使用方法[通俗易懂]PS~:Promise是一个构造函数,自己身上有all、reject、resolve等几个方法,原型上有then、catch等几个方法。Promise对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值。一、Promise有以下三种状态:pending:初始状态,既不是成功,也不是失败状态,(等待中,或者进行中,表示还没有得到结果)fulfi…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

PS~: Promise是一个构造函数,自己身上有all、reject、resolve等几个方法,原型上有then、catch等几个方法。

Promise 对象用于表示一个异步操作的最终状态(完成或失败),以及其返回的值。

 

一、Promise有以下三种状态:

pending: 初始状态,既不是成功,也不是失败状态 , ( 等待中 , 或者进行中 , 表示还没有得到结果 )

fulfilled: 意味着操作成功。

rejected: 意味着操作失败。

Promise有两种状态改变的方式,而且状态只能从pending改变为resolved或者rejected,并且不可逆。当状态发生变化,Promise.then绑定的函数就会被调用。

注意:Promise一旦新建就会「立即执行」,无法取消。这也是它的缺点之一。

 

二、我们使用new来构建一个Promise。

Promise接受一个「函数」作为参数,该函数的两个参数分别是resolve和reject。这两个函数就是就是「回调函数」

resolve函数的作用:在异步操作成功时调用,并将异步操作的结果,作为参数传递出去; 

reject函数的作用:在异步操作失败时调用,并将异步操作报出的错误,作为参数传递出去。

 

Promise的使用方法[通俗易懂]

data为:字符串‘成功’ 或者字符串‘失败’

如果异步操作获得了我们想要的结果,那我们将手动调用resolve函数,在then的第一个作为参数的匿名函数中可以获取数据,如果我们得到了错误的结果,调用reject函数,在then函数的第二个作为参数的匿名函数中获取错误处理数据。 这样,一个次完整的Promise调用就结束了。

三、.then()

then()方法执行后会返回一个新的Promise实例。它有两个参数,分别为:Promise从pending变为fulfilled和rejected时的回调函数(第二个参数非必选)。这两个函数都接受Promise对象传出的值(data)作为参数

语法

Promise的使用方法[通俗易懂]

onCompleted(必传参数):操作成功完成时要运行的履行处理程序函数。

onRejected(选传参数):操作被拒绝时要运行的错误处理程序函数。

Promise任务链

对于Promise的then()方法,then总是会返回一个Promise实例,因此你可以一直调用then,形如p().then().then().then().then().then()…..

1)如果then没有传入处理函数,那么会返回一个继承了上一个处理状态的Promise对象

Promise的使用方法[通俗易懂]

Promise的使用方法[通俗易懂]

                                                                                               打印结果

2)如果then传入处理函数,那么默认返回一个fulfilled/resolved状态的Promise对象

Promise的使用方法[通俗易懂]

Promise的使用方法[通俗易懂]

                                                                                               打印结果

3)如果then传入处理函数,通过处理函数显示的return了一个新的Promise,那么返回这个显示的Promise对象

Promise的使用方法[通俗易懂]

Promise的使用方法[通俗易懂]

                                                                                               打印结果

弊端:不易中途终止后续任务执行

四、.catch()

处理rejected 的情况,与then的第二个参数onRejected相同

Promise的使用方法[通俗易懂]

Promise的使用方法[通俗易懂]

                                                                                              打印结果↑

Promise的使用方法[通俗易懂]

Promise的使用方法[通俗易懂]

                                                                                              打印结果↑

可以捕获.catch以上的任一错误(前提是:.then中的onRejected函数没有做任何处理)

补充~:

1).catch与.then中的onRejected函数冲突,如果前面.then中出行了onRejected函数,.catch将不会执行。

2).catch执行后会返回一个Promise对象,且状态默认为fulfilled/resolved(与.then相似)

五、.all   

多任务处理

Promise的使用方法[通俗易懂]

Promise的使用方法[通俗易懂]

                                                                                           打印结果

需要等(p1、p2)所有promise执行完,才可以执行then

六、.race

Promise的使用方法[通俗易懂]

Promise的使用方法[通俗易懂]

                                                                                              打印结果

(p1、p2)只要有一个执行完,就会执行then。

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/206720.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 列举出linux文件和目录常用的命令_shell基本命令

    列举出linux文件和目录常用的命令_shell基本命令目录命令总览ls(英文全拼:listfiles):列出目录及文件名cd(英文全拼:changedirectory):切换目录pwd(英文全拼:printworkdirectory):显

    2022年7月29日
    8
  • MBUS协议_协议解析

    MBUS协议_协议解析来自于我的163博客,一篇好好的技术文章,在163上居然提示不能显示,我2014年6月25日就翻译出来了,当时很多其他博客都是直接拷贝我的文章都能在网上发布。看了许多关于MBus协议的资料,感觉说的不具体、不完整、也不系统,本人准备结合一个具体的产品实现,从理论和实现上对MBus协议做一个详细的论述,如有不当之处,欢迎讨论。1介绍MBus(MeterB…

    2022年10月16日
    4
  • 设计模式六大原则——迪米特法则(LoD)[通俗易懂]

    设计模式六大原则——迪米特法则(LoD)

    2022年1月25日
    56
  • Java并发编程之ConcurrentSkipListMap

    Java并发编程之ConcurrentSkipListMapConcurrentSkipListMap数据结构抓住了数据结构,对于理解整个ConcurrentSkipListMap有很重要的作用,其实,通过源码可知其数据结构如下。可以看到ConcurrentSkipListMap的数据结构使用的是跳表,每一个HeadIndex、Index结点都会包含一个对Node的引用,同一垂直方向上的Index、HeadIndex结点都包含了最底层的Node结点的…

    2025年5月22日
    4
  • java treeNode 树转list

    java treeNode 树转list树转 list 一般转换方式递归 写起来复制 容易出错 这样就可以应用栈的进出规则进行转化 栈先进后出 https baike baidu com item E6 A0 88 fr aladdin publicList TreeNode node2List TreeNodenode 返回结果集 List TreeNode result TreeNode TreeNode

    2025年9月23日
    6
  • 在哪下载Mysql数据库的JDBC驱动jar包[通俗易懂]

    在哪下载Mysql数据库的JDBC驱动jar包[通俗易懂]目录在哪下载Mysql数据库的JDBC驱动jar包(1)进入此链接:(2)选择需要支持的语言(3)选择其运行平台:(4)注意看后缀,点击下载。​(5)小调查(7)解压在哪下载Mysql数据库的JDBC驱动jar包该jar包的作用:连接数据库!(1)进入此链接:https://dev.mysql.com/downloads/(2)选择需…

    2022年5月21日
    42

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号