当前位置: 首页 > news >正文

Promise.all怎么用

Promise.all 是 JavaScript 中用于并行处理多个 Promise 的方法,它接收一个可迭代对象(通常是 Promise 数组)作为参数,返回一个新的 Promise。其作用是等待所有传入的 Promise 都成功 resolve 后,才会 resolve 一个包含所有结果的数组;如果其中任何一个 Promise 被 reject,则会立即 reject 该错误。

基本语法

Promise.all(iterable).then(results => {// 所有 Promise 都成功时执行,results 是所有结果的数组(顺序与传入顺序一致)}).catch(error => {// 任何一个 Promise 失败时执行,error 是第一个被 reject 的错误});

使用场景

当需要同时发起多个异步请求(如接口调用),且依赖所有请求的结果才能继续后续操作时,Promise.all 非常适用。

示例说明

1. 所有 Promise 都成功的情况
// 模拟三个异步操作
const promise1 = Promise.resolve(1);
const promise2 = new Promise((resolve) => setTimeout(() => resolve(2), 1000));
const promise3 = fetch('https://api.example.com/data').then(res => res.json());// 并行执行,等待所有完成
Promise.all([promise1, promise2, promise3]).then(results => {console.log(results); // [1, 2, 接口返回的数据](顺序与传入数组一致)}).catch(error => {console.error('出错了:', error);});
2. 有一个 Promise 失败的情况
const promise1 = Promise.resolve(1);
const promise2 = Promise.reject(new Error('第二个操作失败')); // 直接失败
const promise3 = new Promise((resolve) => setTimeout(() => resolve(3), 1000));Promise.all([promise1, promise2, promise3]).then(results => {// 不会执行,因为 promise2 已经失败}).catch(error => {console.error(error.message); // 输出:"第二个操作失败"(立即捕获,不等 promise3 完成)});

注意事项

  • 顺序性:返回的结果数组顺序与传入的 Promise 数组顺序一致,与实际完成时间无关。
  • 快速失败:只要有一个 Promise 被 reject,Promise.all 会立即 reject,不会等待其他 Promise 完成。
  • 非 Promise 值:如果传入的可迭代对象中包含非 Promise 值,会被直接当作 Promise.resolve(该值) 处理。
  • 空数组:如果传入空数组,Promise.all 会立即 resolve 为空数组。

扩展:类似方法

  • Promise.allSettled:等待所有 Promise 完成(无论成功或失败),返回包含每个结果状态的数组(适用于需要知道所有操作结果的场景)。
  • Promise.race:只要有一个 Promise 完成(成功或失败),就立即返回该结果(适用于“取最快响应”的场景)。
  • Promise.any:等待第一个成功的 Promise,若所有都失败则返回汇总错误(适用于“只要有一个成功即可”的场景)。
http://www.dtcms.com/a/512316.html

相关文章:

  • 成都网站建设开发价玉环哪里有做网站
  • 01)mysql数据误删恢复相关-mysql5.7 开启 binlog、设置binlog 保留时间
  • 电力电子技术 第五章——非连续导电模式
  • Django 项目 .gitignore 模板
  • MySQL 中文排序(拼音排序)不生效问题全解析
  • 建站网络公司云南网站备案难吗
  • 深度学习(8)- PyTorch 数据处理与加载
  • JAVA:Spring Boot 集成 Jackson 实现高效 JSON 处理
  • 深度学习之YOLO系列YOLOv4
  • 江西移动网站建站推广外包
  • 张家口网站建设zjktao温州公司网址公司
  • Cef笔记:Cef消息循环的集成
  • 第十六篇:Lambda表达式:匿名函数对象的艺术
  • 织梦cms通用蓝白简介大气企业网站环保科技公司源码汕头网站制作全过程
  • xss-labs pass-06
  • 解决selenium提示chrome版本过低问题
  • 重庆做网站电话深圳做装修网站费用多少
  • 做网站的免费空间商品房交易网
  • 鸡蛋质量识别数据集,可识别染血的鸡蛋,棕色鸡蛋,钙沉积鸡蛋,污垢染色的鸡蛋,白鸡蛋,平均正确识别率可达89%,支持yolo, json, xml格式的标注
  • YOLOv4简单基础学习
  • 网站的域名每年都要续费南通网络科技有限公司
  • LLAMA-Factory Qwen3-1.7b模型微调
  • PageHelper 分页框架查询总数 SQL 错误解决方案:从源码逻辑到版本影响(含实验验证)
  • NExF——建立3D空间上的曝光场辅助重建
  • 网站建设公司 合肥影视后期制作培训机构全国排名
  • 审计 jenkins获取构建历史,生成excel
  • 【能源与流程工业案例】KBC借助TeeChart 打造工业级数据可视化平台
  • 网站站点的建立wordpress 清单 主题
  • 苏州市建设交易中心网站wordpress 插件 重置密码
  • Linux 网络协议栈数据流跟踪-静态路由demo