突破异步困境:掌握Promise.allSettled()的实用技巧

简介: 突破异步困境:掌握Promise.allSettled()的实用技巧

突破异步困境:掌握Promise.allSettled()的实用技巧

在日常开发中,我们经常需要处理多个异步操作。传统方法如Promise.all()有一个明显短板:只要有一个Promise被拒绝,整个操作就会立即失败。这在需要确保所有请求都完成的场景下显得力不从心。

Promise.allSettled()的登场

ES2020引入的Promise.allSettled()完美解决了这个问题。它等待所有Promise完成(无论成功或失败),然后返回一个包含每个Promise结果的对象数组。

const promises = [
  fetch('/api/user'),
  fetch('/api/posts'),
  fetch('/api/comments')
];

const results = await Promise.allSettled(promises);

// 处理结果
results.forEach((result, index) => {
   
  if (result.status === 'fulfilled') {
   
    console.log(`请求${
     index}成功:`, result.value);
  } else {
   
    console.error(`请求${
     index}失败:`, result.reason);
  }
});

实际应用场景

  1. 批量数据上报:确保所有上报请求都得到处理,不因单个失败影响其他数据
  2. 多接口数据聚合:即使部分接口异常,仍能展示可用数据
  3. 表单多提交:同时提交到多个端点,分别处理各端点响应

优势总结

Promise.all()相比,allSettled()提供了更完整的控制权,让我们能够优雅地处理部分失败场景,提升应用的用户体验和健壮性。

掌握这个看似简单但极其实用的API,将帮助你在复杂的异步编程中游刃有余。

目录
相关文章
|
13天前
|
Java 数据建模 编译器
告别样板代码:探索Java Record如何重塑数据载体
告别样板代码:探索Java Record如何重塑数据载体
177 114
|
7天前
|
JSON Java API
解锁高性能并发:Java 虚拟线程实战指南
解锁高性能并发:Java 虚拟线程实战指南
172 117
|
13天前
|
安全 PHP
告别繁琐判断:用PHP 8的匹配表达式优雅你的代码
告别繁琐判断:用PHP 8的匹配表达式优雅你的代码
170 120
|
26天前
|
Java API 数据处理
掌握Java Stream API:告别繁琐循环,拥抱函数式编程
掌握Java Stream API:告别繁琐循环,拥抱函数式编程
174 118
|
26天前
|
前端开发 UED
突破异步困境:巧用Promise.all()优化前端性能
突破异步困境:巧用Promise.all()优化前端性能
265 116
|
13天前
|
安全 PHP 开发者
告别混乱:用PHP 8的Match表达式优雅地简化你的条件逻辑
告别混乱:用PHP 8的Match表达式优雅地简化你的条件逻辑
174 113
|
12天前
|
Oracle 安全 关系型数据库
Oracle Linux 9.7 发布 - Oracle 提供支持 RHEL 兼容发行版
Oracle Linux 9.7 发布 - Oracle 提供支持 RHEL 兼容发行版
188 114
Oracle Linux 9.7 发布 - Oracle 提供支持 RHEL 兼容发行版
|
13天前
|
前端开发
告别Flexbox?CSS Grid才是布局的终极答案!
告别Flexbox?CSS Grid才是布局的终极答案!
180 113
|
13天前
|
前端开发 JavaScript API
什么是 Headless UI?
什么是 Headless UI?
196 115
|
16天前
|
人工智能 自然语言处理 人机交互
《智能词汇》:十进制编码驱动的构词体系与极简语法应用机制研究
摘要 《智能词汇》作为一套创新性人工语言的词汇系统,其核心优势集中体现于词汇构词体系与语法应用机制的逻辑化设计。本文聚焦《智能词汇》的核心功能,系统解析其基于十进制编码的构词方法(语义场层级分类、词汇关系网络构建、无限扩展规则)与极简语法应用机制(词本位原则、无形态变化特征、语序主导语义表达)。研究表明,《智能词汇》以“道生万物”哲学思想为内核,以十进制数学逻辑为骨架,构建了“编码即语义、关系即规则、语法即秩序”的完整体系,实现了词汇构词的规则化、语义关联的精准化与语法应用的简洁化,为人工语言的词汇与语法设计提供了新范式,兼具语言学习的高效性与跨场景应用的适配性。
207 114
《智能词汇》:十进制编码驱动的构词体系与极简语法应用机制研究