31、简要描述Promise.all的用途
Promise.all 是 JavaScript 中用于处理多个异步操作的核心方法,其核心用途是并行聚合多个 Promise 的结果,并在所有操作成功时统一返回结果数组。以下是其关键特性与典型应用场景的简要描述:
核心功能
1、并行执行
接收一个 Promise 数组(或可迭代对象),所有 Promise 同时发起(非顺序执行),提升效率。
2、统一结果处理
- 成功:返回所有结果的数组(顺序与输入一致),通过 .then() 获取。
- 失败:第一个被拒绝(rejected)的 Promise 会触发 .catch(),并终止后续等待。
典型用途
1、批量请求数据
同时发起多个 API 请求,合并结果后再渲染页面,避免“瀑布流”式串行请求。
Promise.all([getUserData(), getPosts(), getComments()]).then(([user, posts, comments]) => {// 同时获取用户、帖子和评论数据});
2、依赖并行加载
初始化应用时并行加载多个资源(如配置、模板、翻译文件),全部就绪后启动逻辑。
3、多源数据校验
并行验证多个数据源(如用户名、邮箱、密码),统一返回校验结果。
注意事项
- 错误处理:若需单独处理部分失败,可用 Promise.allSettled 替代。
- 顺序敏感:结果数组顺序与输入顺序一致,即使某些 Promise 先完成。
- 性能权衡:并行执行可能因资源竞争(如网络带宽)导致实际耗时未显著减少。
对比其他方法
总结:Promise.all 是并行异步任务的“组合器”,适用于需要“全有或全无”结果的场景,通过简化多任务协调逻辑提升代码可读性。