Promise.resolve() 和 Promise.reject() 是创建已确定状态 Promise 的快捷方法:前者将任意值包装为 fulfilled 状态(支持展开 thenable/Promise),后者直接返回 rejected 状态(不展开,reason 原样保留),常用于统一接口、条件提前返回、错误模拟等场景。

Promise.resolve() 和 Promise.reject() 是创建已确定状态 Promise 的快捷方法,不用写 new Promise() 的冗长结构,适合快速返回成功或失败结果。
用 Promise.resolve() 快速创建已兑现的 Promise
它把任意值(包括普通值、thenable 对象、甚至另一个 Promise)包装成一个已 fulfilled 状态的 Promise。
- 传入普通值(如字符串、数字、对象):直接返回 fulfilled 状态的 Promise,value 就是该值
- 传入一个 thenable(有 then 方法的对象):会尝试调用其 then 方法,按其行为决定最终状态
- 传入一个 Promise:直接返回它本身(不新建),状态和原 Promise 一致
例如:Promise.resolve(42).then(v => console.log(v)) // 输出 42
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
用 Promise.reject() 快速创建已拒绝的 Promise
它总是返回一个已 rejected 状态的 Promise,reason 就是你传入的参数,常用于同步抛出错误场景。
立即学习“Java免费学习笔记(深入)”;
- 传入 Error 实例更规范(便于后续 catch 中识别类型)
- 传入字符串、数字等也合法,但不利于错误分类和堆栈追踪
- 不会像 resolve 那样“展开” Promise 或 thenable,reject 传什么,reason 就是什么
例如:Promise.reject(new Error('加载失败')).catch(err => console.error(err.message)) // 输出“加载失败”
常见实用场景
- 统一接口返回值:函数有时同步返回数据,有时返回 Promise,用 Promise.resolve() 包一层,确保调用方始终能 .then()
- 条件提前结束:比如缓存命中时,直接 Promise.resolve(data);未命中才发请求
- 模拟失败测试:单元测试中快速构造 rejected Promise,验证错误处理逻辑
- 替代 throw:在 async 函数外想“抛出 Promise 错误”,可用 return Promise.reject(...)
注意点
- Promise.resolve(value) ≠ new Promise(r => r(value)) 在处理 thenable 时行为略有差异(前者会尝试 assimilate,后者直接 resolve)
- Promise.reject(reason) 总是返回 rejected Promise,不会因为 reason 是 Promise 而变成 fulfilled
- 它们不触发微任务队列(不像 new Promise(executor) 中的 executor 是同步执行的),但后续的 .then/.catch 仍按 Promise 规范异步调度

















