promise.reject() 是创建已拒绝 promise 的最简方式,直接传入拒绝原因,等价于 new promise((_, reject) => reject()),常用于错误中转或流程终止,但需用 .catch() 或 await+try/catch 捕获而非同步 try/catch。

Promise.reject() 是创建一个立即进入 rejected 状态的 Promise 的最直接方式,无需手动调用 new Promise() 或写 executor 函数。
基本用法:传入任意拒绝原因
它接受一个参数(通常为错误对象或字符串),作为该 Promise 被拒绝时的 reason:
Promise.reject(new Error("网络请求失败"))Promise.reject("用户未登录")Promise.reject(404)
等价于手动 new Promise + reject
下面两种写法效果完全相同:
Promise.reject("出错了")new Promise((_, reject) => reject("出错了"))
前者更简洁,语义更清晰,适合快速抛出失败信号。
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
常用于错误中转或提前终止流程
在 Promise 链中,可用来拦截条件并主动拒绝:
function fetchUser(id) {
if (!id) {
return Promise.reject("ID 不能为空");
}
return fetch(`/api/user/${id}`)
.then(res => res.json());
}
这样后续的 .catch() 就能统一处理这个错误,无需在每个步骤里重复判断。
注意:不会被 try/catch 同步捕获
因为返回的是一个已拒绝的 Promise,不是同步抛错:
-
try { Promise.reject("err"); } catch(e) { }—— 不会进入 catch - 正确做法是接
.catch()或用await配合try/catch:
Promise.reject("err").catch(console.error);
// 或
async function fn() {
try {
await Promise.reject("err");
} catch (e) {
console.error(e);
}
}Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










