在 JavaScript 中,Promise 的状态有三种:pending
(待定)、fulfilled
(已实现)和rejected
(已拒绝)。
当创建一个 Promise 对象时,它的状态为pending
,当 Promise 对象的处理函数异步执行完毕并成功的时候,它的状态会变为fulfilled
(已实现),并返回一个结果值。如果异步执行过程中发生错误,则 Promise 对象的状态会变为rejected
(已拒绝),并返回一个错误值。
正确地处理 Promise 的状态变化通常需要使用 Promise 的实例方法.then()
和.catch()
,它们分别对应 Promise 对象状态变为fulfilled
和rejected
的情况。我们可以通过链式调用.then()
来处理异步执行成功后的结果,如下所示:
const promise = new Promise((resolve, reject) => {
// 异步执行过程
setTimeout(() => {
resolve('成功的结果值');
}, 1000);
});
promise.then((result) => {
console.log(result); // '成功的结果值'
}).catch((error) => {
console.error(error);
});
在上述代码中,我们创建了一个 Promise 对象并注册了一个异步执行过程,在回调函数中调用了resolve
方法,表示异步执行成功并传递了一个结果值。接着,我们通过.then()
方法注册了一个回调函数,用于处理 Promise 对象状态变为fulfilled
的情况,并在回调函数中打印了结果值。如果异步执行过程中出现错误,Promise 对象的状态会变为rejected
,我们可以通过.catch()
方法来捕获错误并进行处理。
需要注意的是,Promise 的状态一旦变化就不会再改变。因此,我们需要在调用.then()
和.catch()
方法时正确处理 Promise 对象状态变化的情况。