1.promise状态改变
- Promise一共有三种状态:
未决定的:pending
成功:resolved、fulfilled
失败:rejected - Promise一共有两种状态变化:
(1)从pending变成resolved/fulfilled
(2)从pending变成reject - Promise有一个属性对应其状态:PromiseState

2.Promise的resolve和reject两个回调函数参数

- 当new一个Promise对象的时候,该Promise对象的PromiseState属性为pending,PromiseResult属性为空。

- 当Promise构造回调函数中调用resolve方法时,Promise对象的PromiseState属性变为fulfilled,PromiseResult属性变为resolve方法的参数

- 当Promise构造回调函数中调用reject方法时,Promise对象的PromiseState属性变为rejected,PromiseResult属性变为reject方法的参数。下面报了一个警告,是因为使用reject方法时需要catch,关于catch在下一段会讲到
3.Promise的then和catch方法
- Promise的then方法接收两个回调函数,第一个回调函数当PromiseState为fulfilled的时候调用,第二个回调函数当PromiseState为rejected的时候调用。
- Promise的catch方法接收一个回调函数,当Promise的PromiseState为rejected的时候调用;
- catch与then方法的区别是,catch方法不能在PromiseState为fulfilled的时候调用。上面部分中的警告,在使用了then方法或catch方法后就能解决。
4.Promise的resolve和reject方法
Promise的resolve方法返回一个PromiseState为fulfilled或者rejected的Promise对象;reject方法只会返回PromiseState为rejected的Promise对象。


Promise的resolve方法返回一个Promise对象
(1)如果参数为Promise对象,则返回的Promise对象的PromiseState和PromiseResult与参数Promise相同
(2)如果参数为一个非Promise对象(字符串、数字……),则返回一个PromiseState为fulfilled,PromiseResult为参数的Promise对象
Promise的reject方法只会返回一个PromiseState为rejected,PromiseResult为参数的Promise对象。

如果将一个PromiseState为fulfilled的Promise作为参数传入Promise的reject方法中,会返回一个PromiseState为rejected,PromiseResult的值为参数Promise的Promise对象。
5.Promise的all方法和race方法


- Promise的all方法参数为Promise数组,返回结果为一个新的Promise。
(1)如果该Promise数组中,所有的Promise的PromiseState属性都是fulfilled,那么返回一个PromiseState为fulfilled,PromiseResult为参数Promise数组中每一个Promise的PromiseResult组成的集合。
(2)如果该Promise数组中,有一个Promise的PromiseState属性为rejected,则返回的Promise的PromiseState为rejected,PromiseResult为数组中第一个PromiseState为rejected的Promise的PromiseResult。
- Promise的race方法参数也是一个Promise数组,返回Promise数组中第一个状态发生改变后的Promise。
版权声明:本文为qq_45895576原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。