promise 通过链式调用解决回调地狱,支持顺序执行(.then() 传递值或新 promise)、并行处理(promise.all/allsettled)及与 async/await 协作,但不可取消。

Promise 能把嵌套回调变成链式调用,让异步代码更清晰、更易维护。
用 Promise 替代多层回调
传统回调容易形成“回调地狱”,比如连续发起三个 API 请求时,层层嵌套会让逻辑难以阅读和调试。Promise 通过 .then() 把异步操作串成一条线,每个步骤只关注自己的输入输出。
- 把回调函数包装进 new Promise(),在异步任务完成时调用 resolve() 或 reject()
- 后续操作统一写在 .then() 里,错误统一由 .catch() 处理
- 避免在 .then() 里再写回调,保持链式结构干净
串联多个异步任务
Promise 链天然支持顺序执行:前一个 .then() 的返回值(无论普通值还是新 Promise)会自动传给下一个 .then()。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 返回普通值 → 下个 .then() 接收该值
- 返回 Promise → 下个 .then() 等它 settle 后再执行
- 中间任意一步出错,会跳过后续 .then(),直接进入最近的 .catch()
并行处理多个异步操作
当几个请求互不依赖时,用 Promise.all() 可以同时发起、统一等待结果。
- 传入一个 Promise 数组,全部成功才 resolve,任一失败就 reject
- 适合加载多个资源(如用户信息 + 配置 + 权限列表)
- 需要容错时可用 Promise.allSettled(),它总会 resolve,返回每个 Promise 的状态结果
与 async/await 配合更自然
Promise 是 async/await 的基础,而 async/await 让 Promise 的使用更接近同步写法。
- 函数加 async 关键字后,内部可用 await 等待 Promise 结果
- 错误用 try/catch 捕获,比链式 .catch() 更直观
- 注意 await 只能在 async 函数内使用,不能直接写在顶层脚本中(除非用模块顶层 await)
不复杂但容易忽略:Promise 不是万能的,它不能取消、不能中途终止;真正需要取消时,得结合 AbortController 或封装可取消的 Promise。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










