Promise.resolve()是最简创建fulfilled Promise的方式:传入非Promise值直接包装为成功Promise;传入Promise原样返回;传入thenable则调用其then方法展开。

Promise.resolve() 是创建已成功(fulfilled)状态 Promise 的最简方式,无需写 new Promise((resolve) => resolve(value)) 那么啰嗦。
直接传入普通值,自动包装成成功 Promise
传入任意非 Promise 值(如字符串、数字、对象、null、undefined),它会立即返回一个以该值为结果的 fulfilled Promise:
-
Promise.resolve(42)→ 成功 Promise,结果为42 -
Promise.resolve({a: 1})→ 成功 Promise,结果为{a: 1} -
Promise.resolve(undefined)→ 成功 Promise,结果为undefined
传入 Promise 对象,原样返回(不新建)
如果传入的是一个 Promise(无论 pending、fulfilled 还是 rejected),Promise.resolve() 直接返回它本身,不会触发状态转换或新建 Promise:
-
const p = Promise.resolve('ok');→Promise.resolve(p) === p为 true - 这常用于“确保参数是 Promise”,统一处理逻辑,比如函数入参兼容同步值和异步值
传入 thenable 对象,会尝试“展开”它
如果传入的对象有 then 方法(即符合 thenable 协议),Promise.resolve() 会调用其 then,并返回一个新 Promise,行为等价于 Promise.resolve().then(...):
立即学习“Java免费学习笔记(深入)”;
-
Promise.resolve({then(cb) { cb('from thenable'); }})→ 成功 Promise,结果为'from thenable' - 注意:这不是“安全兜底”,而是有意支持类 Promise 的互操作性
常见快捷用法场景
实际开发中,这些写法既简洁又语义清晰:
- 返回固定数据的 mock API:
const getUser = () => Promise.resolve({id: 1, name: 'Alice'}); - 条件同步/异步统一处理:
return condition ? Promise.resolve(data) : fetch('/api'); - 链式调用开头确保是 Promise:
Promise.resolve(initialValue).then(...).catch(...)


















