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


相关推荐

  • Centos 7安装nginx并配置https[通俗易懂]

    Centos 7安装nginx并配置https[通俗易懂]1.更新yum源yumupdate2.安装nginx的依赖环境yuminstall-ygcc-c++pcrepcre-develzlibzlib-developensslopenssl-develgcc-c++:安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境。pcrepcre-devel:PCRE(PerlCompatible…

    2022年5月26日
    45
  • map的遍历方式「建议收藏」

    map的遍历方式「建议收藏」@org.junit.TestpublicvoidtestHashMap(){Map<String,String>map=newHashMap<>(4);

    2022年7月3日
    32
  • webapi安全验证_手机测试路由器丢包率

    webapi安全验证_手机测试路由器丢包率无线局域网鉴别与保密基础结构WAPI是无线局域网安全协议,也被列为多种检测的测试项目。自联盟成员西电捷通研发WAPI技术以来,我们在密切跟踪WAPI安全技术的基础上,按照协议的技术特点将其工程实践化,而且,基于对WAPI安全协议的深刻理解,我们对WAPI安全协议的检测形成了一套系统方法,并研发了WAPI安全协议检测系统,如何保障WAPI安全协议检测系统测试的准确性和稳定性将是测试工作的核心。

    2022年10月15日
    4
  • 股票API

    实时股票数据接口大全股票数据的获取目前有如下两种方法可以获取:1.http/javascript接口取数据2.web-service接口1.http/javascript接口取数据1.1Sina股票数据接口以大秦铁路(股票代码:601006)为例,如果要获取它的最新行情,只需访问新浪的股票数据接口:http://hq.sinajs…

    2022年4月7日
    65
  • Java学习电子书大全「建议收藏」

    Java学习电子书大全「建议收藏」声明:以下内容仅供学习交流,转载自沉默王二gitee,如有侵权联系作者删除。简单说一下我为什么要花半个多月的时间来整理这份书单。主要是因为很多读者的知识体系是零散的,不成系统的,况且技术书籍这么庞杂。有了我这份清单之后,那些没有经验或者经验有限的初学者,在学习的时候思路瞬间就开阔了许多:少走弯路,利用有限的精力,更加高效地学习。想应聘初级Java工程师,那只需要阅读入门、工具、框架和数据库方面的书籍就行了;如果想应聘Java高级工程师,那么就需要阅读并发编程、底层、性能优化方面的书籍

    2022年7月7日
    73
  • java学生选课管理系统源代码_java实现选课管理swing

    java学生选课管理系统源代码_java实现选课管理swing需求Java实现学生系统(实际上是学生、教师管理系统+学生选课系统两部分构成)需求如下:程序设计为让上述要求展开。源代码由于代码量较大,所有代码以百度网盘链接形式给出(永久有效)。百度网盘链接提取码:0713解压后里面的内容应该是这样的:它包含了所有部分的代码。这里我使用eclipse编程,他们的组织形式是:按照这个形式组织好,就可以运行啦,14+的jdk版本没有任何报错。我的jdk版本:效果简单(真的很简单)展示下运行效果。好了,我很懒所以就贴这些。有

    2022年10月15日
    6

发表回复

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

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