不去做怎么知道做不到,用心做好每一天做好每一件事。|

轻风细雨_林木木

园龄:6年3个月粉丝:4关注:1

多接口调用,使用Promise.all、Promise.race和Promise.any

大纲

1.Promise.all
2.Promise.race
3.Promise.any

1.Promise.all 使用

说明:
Promise.all可以将多个Promise实例包装成一个新的Promise实例。同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回最先被reject失败状态的值

实例:

let p1 = new Promise((resolve, reject) => {
resolve('成功1')
})
let p2 = new Promise((resolve, reject) => {
resolve('成功2')
})
let p3 = new Promise((resolve, reject) => {
reject(new Error('失败')) // 直接写错误ESLint报错,需要reject(new Error(0))写法
})
Promise.all([p1, p2]).then((result) => {
console.log(result, '成功1--')
}).catch((error) => {
console.log(error, '失败')
})
Promise.all([p1, p2, p3]).then((result) => {
console.log(result, '成功2--')
}).catch((error) => {
console.log(error)
})

结果:

  • Promise.all获得的成功,数组里面的数据顺序和Promise.all接收到的数组顺序是一致的;
  • 多个请求数据的过程中,按照顺序获取和使用数据的场景
  • 失败的时候则返回最先被reject失败状态

打印结果:

在这里插入图片描述

2.Promise.race 使用

说明:
Promse.race 意思就是说,Promise.race([p1, p2, p3])里面哪个结果获得的快,就返回那个结果,不管结果本身是成功状态还是失败状态

let p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve('success')
},1000)
})
let p2 = new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('失败'))
}, 500)
})
Promise.race([p1, p2]).then((result) => {
console.log(result)
}).catch((error) => {
console.log(error) // 打开的是 'failed'
})

结果:
在这里插入图片描述

3.Promise.any

说明:
Promise.any() 方法同样是将多个 Promise 实例,包装成一个新的 Promise 实例。
Promise.any() 有一个子实例成功就算成功,全部子实例失败才算失败。

本文作者:轻风细雨_林木木

本文链接:https://www.cnblogs.com/linzhifen5/p/16961003.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   轻风细雨_林木木  阅读(309)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 使用C#创建一个MCP客户端
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 尚好的青春 孙燕姿
  2. 2 孙燕姿
  3. 3 克卜勒 孙燕姿
- 孙燕姿
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.