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 })
()=>

浙公网安备 33010602011771号