JS中promise是什么?

JS中promise是什么?Promise是异步编程的一中解决方案,最早是由社区提出的,es6中正式的将其纳入,他是一个对象,可以获取到异步的操作,他相比传统的回调函数,更加的强大和合理,避免了回调地狱。所谓的Promise,简单的来说就是一个可以存放未来才能结束的任务或者事件。1.Promise实列有三个状态:-pending(进行中)-resolved(成功)-rejected(失败)当要处理某个任务的时候,promise的状态是pending,任务完成是状态就变成了resolved,任务失败状

大家好,又见面了,我是你们的朋友全栈君。

Promise是异步编程的一中解决方案,最早是由社区提出的,es6中正式的将其纳入,他是一个对象,可以获取到异步的操作,他相比传统的回调函数,更加的强大和合理,避免了回调地狱。

所谓的Promise,简单的来说就是一个可以存放未来才能结束的任务或者事件。

1. Promise实列有三个状态:

– pending (进行中)

– resolved (成功)

– rejected(失败)

当要处理某个任务的时候,promise的状态是pending,任务完成是状态就变成了resolved,任务失败状态就变成了rejected。

2.Promise实列有俩个过程:

– pending — resolved (进行到成功)

– pending — rejected (进行到失败)

状态一旦改变就不能在变成其他的状态。

3. Promise方法:

常用的方法有5中:then()、catch()、all()、race()、finally()。

1.then()

接受俩个俩个回调函数作为参数,第一个参数表示成功的时候去执行,第二参数表示失败的时候去执行,返回的时一个新的promise的实列。

2.catch()

相当于then方法的第二个参数。

3.all()

接受一个数组作为自己的参数,数组中每一项都是一个promise对象,当数组的每一个promise状态时resolved时,all方法的状态才会变成resolved,有一个变成rejected,那么all方法的状态就会变成rejected。

4.race()

他和all方法一样,接受一个数组作为自己的参数,但是不同的时他时以第一完成的promise的状态来定义直接的状态,假设第一个状态时resolved,那么race方法的状态就是resolved,反之相反。

5finally()

他是不管promise时什么状态都会执行的都会去执行的,他不接受任何的参数。

Promise的优点:

– 对象的状态不受外界的影响,只有异步的操作结果才能改变他的状态。

– 一旦状态改变就不会在变,任何时候都可以得到这个结果,就如他的名字一样promise(承诺)。

Promise的缺点:

– 无法去取消promise,只要创建就会执行,无法中途去终止。

– 如果不设置回调函数去接受,promise内部会报错,不会映射到外部

– 处在pending(进行中)时 ,外部无法得知进展到那一步

总结:

Promise最早是由社区提出的,在es6才被正式的纳入规范中,是为了解决异步编程的一种方案

他是一个构造函数,接受一个函数作为参数,返回一个Promise实列。他有三个状态:pending(进行中)、resolved(成功)、rejected(失败)。实列的状态只能是pending ->resolved和

pending ->rejected ,状态一旦改变就不会在变换了。

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

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

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


相关推荐

  • 如何通过maven打包可执行jar包[通俗易懂]

    如何通过maven打包可执行jar包[通俗易懂]一、目的将代码打包成jar包有四种形式:1、只打包本项目的代码,不包括依赖的jar包,并且不可直接通过java-jarxxx.jar执行(应用场景:我们日常使用依赖的jar包)2、只打包本项目的代码,不包括依赖的jar包,并且可以直接通过java-jarxxx.jar执行(应用场景:执行时依赖的jar包存在在本jar包外部,减少jar体积)3、打包本项目的代码,同时将依赖的jar包解压后的文件复制到本jar包中,可以直接通过java-jarxxx.jar执行(应用场景:直接执行,

    2022年10月4日
    3
  • # 创业计划书-样例参考五千套(一)[通俗易懂]

    # 创业计划书-样例参考五千套(一)[通俗易懂]创业计划书-%9C第五届“挑战杯”创业计划书(决赛版)创业计划书-(大赛通知)关于对第三届中国“互联网+”大学生创新创业大赛“的实施方案_项目计划书知识图谱创业计划书-(大赛章程)“创青春”全国大学生创业大赛章程创业计划书-(对外)企业研究开发项目计划书–样本创业计划书-(计划书模板)“创青春”创业大赛商业计划书模板_计划书模板创业计划书-(评审规则)第二届中国“互联网+”大学生创新创业大赛全国总决赛评审规则创业计划书-(评审规则)第三届中国“互联网+”大学生创新创业大赛全国总决赛评审规则创业

    2022年6月11日
    25
  • icem网格数和节点数_icem如何查看网格数量[通俗易懂]

    icem网格数和节点数_icem如何查看网格数量[通俗易懂]>减少总块数,加速求解关键:统一索引y/j索引空间索引空间x/i结构网格的索引与合并ICEM中块的合并Autodyn中网格的合并结构网格的索引与合并索引……网格的索引合并->减少总块数,加速求解关键:统一索引y/j索引空间索引空间x/i结构网格的索引与合并ICEM中块的合并Autodyn中网格的合并结构网格的……选择…

    2022年5月25日
    114
  • decimal 整数 mysql_MySQL decimal类型

    decimal 整数 mysql_MySQL decimal类型在本教程中,我们将向您介绍MySQLDECIMAL数据类型以及如何在数据库表中有效地使用它。MySQLDECIMAL数据类型简介MySQLDECIMAL数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据。要定义数据类型为DECIMAL的列,请使用以下语法:column_nameDECIMAL(P,D);在上面的语法中:P…

    2022年7月17日
    21
  • 认识ManualResetEvent

    认识ManualResetEventManualResetEvent可以通知一个或多个正在等待的线程已发生事件,允许线程通过发信号互相通信,来控制线程是否可以访问资源。当一个线程开始一个活动(此活动必须完成后,其他线程才能开始执行)时

    2022年7月4日
    28
  • java基本输入语句_java键盘输入语句

    java基本输入语句_java键盘输入语句在Java中进行输入时,最常用的两种输入方式为:1.使用ScannerScanner使用步骤:导入包importjava.util.Scanner;//导包的动作必须出现在类定义的上方创建对象//newScanner(System.in)为固定格式,不可以改变Scannersc=newScanner(System.in); 接收数据inti=sc.nextInt(); //这里使用的为int型,如果改变,则需要改变sc.nextInt();

    2025年11月25日
    5

发表回复

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

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