promise的catch放在then前面的场景

我们知道Promise 的 .then() 和 .catch() 方法的链式调用顺序通常是先 .then() 后 .catch()。这是因为 .then() 方法用于处理成功的情况,而 .catch() 方法用于处理失败的情况。.catch() 方法会捕获前面所有 .then() 链中抛出的异常,以及在 Promise 执行过程中发生的任何错误。

在一个失败重试场景中我把catch放在then前面,代码逻辑会很简单:

javascript 复制代码
...
const pause = (duration) => new Promise((reslove) => setTimeout(reslove, duration));
...
dosomething()
	.catch(e=>{
		console.log("frist fail");
		pause(delay).then(()=>{
			console.log("second try"); 
			dosomething()
				.then(()=>{console.log("retry succ");});
			})
	.then(()=>{dootherthing();})
	.catch(e=>{console.log("fail");})
相关推荐
我是一颗柠檬14 小时前
【Java后端技术亮点】Feed流三级缓存设计,从10秒到100毫秒的优化实战
java·开发语言·后端·缓存
兆。14 小时前
LangChain文档处理集成指南:面向知识管理开发者
开发语言·langchain·c#
Brilliantwxx14 小时前
【算法从零到千】【1-7】 双指针算法
开发语言·c++·笔记·算法·leetcode·推荐算法
超梦dasgg14 小时前
Java 正则表达式 完整详解(语法 + 核心类 + 常用方法 + 实战案例)
java·开发语言·正则表达式
方也_arkling14 小时前
【Java-Day17】API篇-BigInteger和BigDecimal
java·开发语言
星辰_mya14 小时前
ThreadLocal之微服务链路追踪
java·开发语言·前端
m0_6174939414 小时前
PySide6/PyQt6实现中英文切换完整教程(Qt Designer + Qt Linguist + 动态切换)
开发语言·qt
w_t_y_y14 小时前
vue父子组件通信(一)父子调用和通信(2)VUE3
前端·javascript·vue.js
眠りたいです14 小时前
现代C++:C++17中的新语言特性
开发语言·c++·c++17