new Promise() 创建 Promise 对象,立即执行传入的 executor 函数;调用 resolve(value) 或 reject(reason) 分别触发 .then() 或 .catch() 异步回调,状态一旦确定不可逆。

创建基础的 Promise 对象,核心是用 new Promise() 构造函数,并传入一个执行器函数(executor),该函数接收 resolve 和 reject 两个参数。
基本语法结构
执行器函数在 Promise 实例创建时**立即同步执行**,而 resolve 或 reject 的调用会触发后续的 .then() 或 .catch() 异步回调:
- resolve(value):表示异步操作成功,value 将作为 .then() 的参数
- reject(reason):表示异步操作失败,reason 将作为 .catch() 或 .then(null, ...) 的参数
最简示例:模拟延时成功
下面是一个 1 秒后兑现成功的 Promise:
const myPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("操作完成");
}, 1000);
});
myPromise.then(result => console.log(result)); // 1秒后输出:操作完成
带错误处理的完整写法
真实场景中通常需兼顾成功与失败路径:
立即学习“Java免费学习笔记(深入)”;
const fetchUser = new Promise((resolve, reject) => {
const success = Math.random() > 0.3; // 模拟 70% 成功率
if (success) {
resolve({ id: 123, name: "张三" });
} else {
reject(new Error("网络请求失败"));
}
});
fetchUser
.then(user => console.log("获取用户:", user))
.catch(err => console.error("出错了:", err.message));
注意要点
- Promise 构造函数必须传入 executor 函数,否则报错
- executor 内部不能用 return 返回值来控制 Promise 状态——必须显式调用 resolve/reject
- 一旦 resolve 或 reject 被调用,Promise 状态即确定(fulfilled 或 rejected),后续再调用无效
- 未捕获的 reject 会触发全局 unhandledrejection 事件,建议始终用 .catch() 或 try/catch(配合 await)处理


















