Promise的几个其他类方法

1:resolve---把一个对象转换成Promise对象

复制代码
 1 //把一个对象转成Promise对象 
 2 //resolve参数(普通的值、对象 Promise)
 3 const promise = Promise.resolve({ name: 'tyy' })
 4     //相当于
 5     // const promise=new Promise((resolve,reject)=>{
 6     //     resolve({name:'tyy'})
 7     // })
 8 promise.then(res => {
 9     console.log(res);
10 })
复制代码

 

 2:reject---也是把一个对象转换成为Promise对象 但是注意reject传入的参数不会像resolve一样分三种情况

复制代码
 1 // const promise = Promise.reject('rejected message')
 2 //1:相当于
 3 // const promise=new Promise((resolve,reject)=>{
 4 //     reject('rejected message')
 5 // })
 6 //2:特别注意的是reject和resolve不太一样 reject 传入什么就是什么
 7 const promise = Promise.reject({
 8     then: function(resolve, reject) {
 9         resolve('1111')
10     }
11 })
12 promise.then(res => {
13     console.log(res);
14 }).catch(err => {
15     console.log(err);
16 })
复制代码

 

 3:all方法 多个Promise构成一个新的Promise 状态(如果所有的Promise都是fulfilled状态,新的Promise也是fulfilled状态,如果所有的Promise,有一个rejected状态,新的Promise也是rejected状态)

复制代码
 1 const p1 = new Promise((resolve, reject) => {
 2     setTimeout(
 3         resolve(11111), 1000)
 4 })
 5 const p2 = new Promise((resolve, reject) => {
 6     setTimeout(
 7         resolve(22222) //结果:res: [ 22222, 11111, 33333 ]
 8         //reject(22222)结果 err: 22222
 9         , 2000)
10 })
11 const p3 = new Promise((resolve, reject) => {
12     setTimeout(
13 
14         resolve(33333), 300)
15 })
16 Promise.all([p2, p1, p3]).then(res => {
17     console.log('res:', res);
18 }).catch(err => {
19     console.log('err:', err);
20 })
复制代码

4:allSetted 无论所有的promise是什么状态,新的Promise都会是fulfilled状态,并且会以数组形式返回所有的promise的状态

复制代码
 1 //Promise.all
 2 //allSettled
 3 //race
 4 //any
 5 const p1 = new Promise((resolve, reject) => {
 6     setTimeout(
 7         reject(11111), 1000)
 8 })
 9 const p2 = new Promise((resolve, reject) => {
10     setTimeout(()=>
11         //resolve(22222) 
12         reject(22222) 
13         , 2000)
14 })
15 const p3 = new Promise((resolve, reject) => {
16     setTimeout(()=>
17 
18         reject(33333), 300)
19 })
20 Promise.allSettled([p2, p1, p3]).then(res => {
21     console.log('res:', res);
22 }).catch(err => {()=>
23     console.log('err:', err);
24 })
复制代码

 

 5:race---新的Promise的状态===最先有结果的状态(无论是fulfilled还是rejected)

复制代码
 1 //Promise.all
 2 //allSettled
 3 //race
 4 //any
 5 const p1 = new Promise((resolve, reject) => {
 6     setTimeout(
 7         resolve(11111), 1000)
 8 })
 9 const p2 = new Promise((resolve, reject) => {
10     setTimeout(()=>
11         //resolve(22222) 
12         reject(22222), 2000)
13 })
14 const p3 = new Promise((resolve, reject) => {
15     setTimeout(()=>
16 
17         resolve(33333), 300)
18 })
19 Promise.race([p1, p2, p3]).then(res => {
20     console.log('res:', res);
21 }).catch(err => {()=>
22     console.log('err:', err);
23 })
复制代码

 

 6:any---ES12新增的---会等到一个fulfilled的状态来决定新的Promsie的状态,如果全部都是rejected状态,也会等到所有的promise变成rejected状态然后报一个错误

复制代码
 1 //Promise.all
 2 //allSettled
 3 //race
 4 //any
 5 const p1 = new Promise((resolve, reject) => {
 6     setTimeout(()=>
 7         reject(11111), 1000)
 8 })
 9 const p2 = new Promise((resolve, reject) => {
10     setTimeout(()=>
11 
12         reject(22222), 2000)
13 })
14 const p3 = new Promise((resolve, reject) => {
15     setTimeout(()=>
16         reject(3333) // 结果是err: AggregateError: All promises were rejected
17         //resolve(33333) //结果是res: 33333
18         , 300)
19 })
20 Promise.any([p2, p1, p3]).then(res => {
21     console.log('res:', res);
22 }).catch(err => {
23     console.log('err:', err);
24 })
复制代码

 

()=>
posted @   沁霓  阅读(312)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示