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 @ 2022-04-01 10:04  沁霓  阅读(336)  评论(0)    收藏  举报