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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • COBOL语言概述

    COBOL语言概述一 COBOL 程序的结构 1 部 IDENTIFICATI 标识部 ENVIRONMENTD 环境部 DATADIVISION 数据部 PROCEDUREDIV 过程部 2 节 SECTION 和段 PARAGRAPH 1 部 节 段 2 标识部下面不设节 直接设段 3 过程部可以设节 下面再设段 也可以直接设段 3

    2025年7月21日
    4
  • Oracle与MySQL区别「建议收藏」

    Oracle与MySQL区别「建议收藏」1、Oracle是大型数据库,而MySQL是中小型数据库。但是MySQL是开源的,Oracle是收费的2、Oracle的内存占有量非常大,而mysql非常小3、MySQL支持主键自增长,插入时会自动增长。Oracle主键一般使用序列。4、MySQL分页用limit关键字,而Oracle使用rownum字段表明位置5、MySQL中0、1判断真假,Oracle中truefalse6、MySQL中命令默认commit,但是Oracle需要手动提交7、MySQL在windows环境下大小写不敏感,在l

    2022年9月14日
    3
  • 摘星-上升篇

    以下内容均来自阳光占星,如有冒犯,告知删除!上升金牛——歌者的哼唱有这么一类人,可能有着细致柔和的五官,容易发胖的体质以及坚定的眼神。有点害羞与腼腆;喜欢哼唱着小曲,不喜欢拥挤的人群而喜欢宁静的自然。这样的一群人就是生活在我们身边的上升金牛。他们喜欢舒缓的生活节奏,喜欢按照自己的节奏去一点点的完成计划,不喜欢突如其来的变动扰乱了自己的生活。金牛是一个喜欢稳定和安逸的星座,并且由于金牛的守护星为金星,上升金牛也诞生出更多的艺术色彩。但上升金牛的审美一直被吐槽,旁人就必须忍受他那万年…

    2022年4月6日
    73
  • 基于flannel网络搭建的docker,flannel连接不上2379端口,etcd集群出现异常

    基于flannel网络搭建的docker,flannel连接不上2379端口,etcd集群出现异常

    2021年6月2日
    115
  • jsp网页在浏览器中不显示图片_eclipse环境下配置tomcat中jsp项目的虚拟路径[通俗易懂]

    遇到的问题是这样的,在jsp网页中嵌入了本地的图片,由于会用到上传到服务器的图片,所以没有放到项目里面,而是把所有图片单独放到一个文件夹里,然后打算使用绝对路径把要显示的图片显示出来,比如是放在了E盘的uploadPhotos文件夹里,但是在使用绝对路径显示时,代码如下:在eclipse中的内置浏览器里面是可以显示的,但是到其他浏览器都不显示,后来看到这篇文章http://bbs.csdn.net

    2022年3月11日
    45
  • 在触发思考

    在触发思考

    2022年1月11日
    48

发表回复

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

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