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 的状态机制看似简单,但正是这种“单向、不可逆”的设计,让它成为可靠异步处理的基础。理解清楚状态何时改变、如何传递,能避免很多常见的异步陷阱。
以上就是js中Promise的状态探究的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号