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 })
()=>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)