

新闻资讯
技术学院Promise有三种状态:pending、fulfilled和rejected,初始为pending,通过resolve或reject改变状态,且一旦改变不可逆;调用resolve(value)进入fulfilled状态,触发.then()第一个回调,调用reject(reason)进入rejected状态,触发.catch()或.then()第二个回调;多次调用resolve或reject只有第一次有效;在链式调用中,.then()或.catch()返回值决定新Promise的状态:返回普通值则新Promise为fulfilled,抛出异常则为rejected,返回Promise则继承其状态。
Promise 是 JavaScript 中处理异步操作的核心机制之一,理解它的状态变化对掌握异步编程至关重要。Promise 本身有三种状态:等待(pending)、成功(fulfilled)和失败(rejected)。一旦状态发生改变,就不会再变,且这个过程是不可逆的。
每一个 Promise 实例在生命周期中只能处于以下三种状态之一:
重要的是,Promise 的状态一旦从 pending 变为 fulfilled 或 rejected,就不会再发生变化,这个特性称为“状态的凝固性”。
Promise 状态的改变由执行器函数(executor)中的 resolve 和 reject 函数触发:
new Promise((resolve, reject) => {调用 resolve(value) 会将 Promise 状态设为 fulfilled,并将 value 传递给后续的 .then() 回调;调用 reject(reason) 会将其设为 rejected,reason 通常是一个错误对象。
无论你在 executor 中调用多少次 resolve 或 reject,只有第一次有效:
new Promise((resolve, reject) => {
不起作用上面的例子中,Promise 一旦 resolve('ok') 被调用,状态立即变为 fulfilled,后续的 reject 和 resolve 都会被忽略。
在 .then() 或 .catch() 中返回值,会生成一个新的 Promise,其状态取决于回调的返回结果:
这意味着你可以通过链式结构精确控制异步流程的状态流转。
基本上就这些。Promise 的状态机制看似简单,但正是这种“单向、不可逆”的设计,让它成为可靠异步处理的基础。理解清楚状态何时改变、如何传递,能避免很多常见的异步陷阱。