第
详解JavaScript中Promise类的使用方法
目录1.all2.allSettled3.race4.any这篇主要讲一下Promise的类方法的基本使用,至于Promise的基本使用这里就不赘述了,之前也有手写过Promise、实现了Promise的核心逻辑。其实我们平时用Promise也挺多的,不过又出现了两个新的语法(ES11,ES12新增了两个),所以这篇就简单说一下,也挺简单
1.all
Promise.all方法我们可以传入一个数组参数,数组中可以放多个Promise,它会等所有的Promise的状态都为fulfilled时,来获取最终的结果,它会把所有每个Promiseresolve的结果,放在一个数组中,且结果的顺序和我们传入的数组参数中的Promise保持一直(跟时间无关)
constp1=newPromise((resolve,reject)={
constobj={data:11111}
setTimeout(()={
resolve(obj)
},3000)
constp2=newPromise((resolve,reject)={
constobj={data:22222}
setTimeout(()={
resolve(obj)
},2000)
constp3=newPromise((resolve,reject)={
constobj={data:33333}
setTimeout(()={
resolve(obj)
},1000)
Promise.all([p1,p2,p3]).then(result={
console.log(result)
}).catch(err={
console.log(err:,err)
})
上面代码会在3s后在then方法中拿到最终的结果如下:
但是all方法是有个缺陷的,当有其中一个Promise变成rejected状态时,新Promise就会立即变成对应的reject状态,也就是只能在catch中捕获到错误,其他fulfilled状态的值我们是拿不到的。因此有了allSettled方法
2.allSettled
allSettled是在ES11(2025)中添加的新的API,Promise.allSettled
该方法会在所有的Promise都有结果时(无论是fulfilled,还是rejected)都会在then方法中拿到我们的最终的结果:
constp1=newPromise((resolve,reject)={
constobj={data:11111}
setTimeout(()={
resolve(obj)
},3000)
constp2=newPromise((resolve,reject)={
constobj={data:22222}
setTimeout(()={
reject(obj)
},2000)
constp3=newPromise((resolve,reject)={
constobj={data:33333}
setTimeout(()={
resolve(obj)
},1000)
Promise.allSettled([p1,p2,p3]).then(result={
console.log(result)
}).catch(err={
console.log(err:,err)
})
我们传入了三个Promise,在2s的时候我们的p2就reject拒绝了,但是我们同样可以拿到结果,但是这个result结果数组结构有点儿变化,我们看下打印结果:
我们可以看到allSettled的结果是一个数组,数组中存放着每一个Promise的结果,并且是对应一个对象的;这个对象中包含status状态,以及对应的value值
3.race
race是竞技、赛跑的意思,也就是谁先有结果我就要谁,这个result拿到的结果就不是一个数组了,而是最快的一个Promiseresolve出来的结果
constp1=newPromise((resolve,reject)={
constobj={data:
您可能关注的文档
最近下载
- 运筹学题库及答案.doc VIP
- 2012江苏高考数学试卷(含答案).doc VIP
- 2018江苏高考数学.doc VIP
- 多因素身份验证系统设计与实现.docx VIP
- 新概念英语第一册上半册 Lesson15-16 课件.ppt VIP
- 2025 年剖宫产术后护理的最新要点与技巧.docx VIP
- 医院科室排班表.docx VIP
- 楼宇低压配电系统的设计.doc VIP
- 【电脑小知识】:如何使用注册表来恢复误删的Win7便签?.docx VIP
- 班子(在带头强化政治忠诚、提高政治能力;在带头固本培元、增强党性;在带头敬畏人民、敬畏组织、敬畏法纪;在带头干事创业、担当作为;在带头坚决扛起管党治党责任)存在不足.docx VIP
原创力文档

文档评论(0)