文章目录1k Star的p-retry让异步操作失败自动重试核心功能适用场景注意事项1k Star的p-retry让异步操作失败自动重试sindresorhus开源的p-retry项目目前在GitHub上获得1009个Star。这个库的核心功能是为异步操作添加重试机制解决网络请求、IO操作等场景下偶发失败的问题。日常开发中异步操作失败是常见问题。比如调用第三方API时偶尔超时读取远程文件时临时网络波动。这些失败通常是暂时性的手动添加重试逻辑需要写大量重复代码p-retry就是专门处理这类场景的工具。核心功能p-retry基于Promise设计兼容所有异步Promise操作。支持自定义重试次数默认会重试两次加上首次调用最多执行三次。可以设置重试延迟策略内置指数退避算法每次重试间隔自动递增避免短时间内频繁请求给服务端造成压力。支持自定义重试条件可以指定只有特定类型的错误才触发重试比如网络错误、5xx状态码的请求错误而4xx这类业务错误直接抛出不再重试。还支持配置onFailedAttempt回调函数每次重试失败时可以记录日志、上报监控数据。用法简单只需要把原本的异步函数包裹在pRetry调用中即可。比如原本的fetch请求只需要外层套一层pRetry就能自动实现失败重试。对现有代码侵入性极低只需要修改几行代码就能接入。适用场景处理第三方API调用。调用外部服务时网络波动、服务端临时限流都可能导致请求失败添加重试机制可以大幅提升成功率减少业务异常。处理文件上传下载。大文件传输过程中网络临时中断很常见自动重试可以避免用户手动重新发起操作提升使用体验。处理数据库操作。高并发场景下数据库偶尔会出现锁冲突、连接超时等问题自动重试可以解决大部分这类偶发错误不需要上层业务手动处理。注意事项不要对所有操作都加重试。对于写操作需要确保接口幂等性否则重试可能导致数据重复提交。比如支付接口、订单创建接口重试前需要确认不会产生重复数据。合理设置重试次数和间隔。重试次数过多会增加请求耗时过长的延迟会影响用户体验。根据业务场景选择合适的参数核心接口可以适当增加重试次数用户侧接口控制总耗时在可接受范围内。可以配合熔断机制使用。如果短时间内大量请求失败说明服务端可能出现故障继续重试只会加重服务端压力这时候应该触发熔断停止请求一段时间后再恢复。目前p-retry已经被大量项目依赖每周npm下载量超过千万次是Node.js生态中成熟的重试解决方案。如果你的项目中需要处理异步操作失败重试的场景可以直接接入使用不需要重复造轮子。可以直接接入使用不需要重复造轮子。