在 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 对象状态变化的情况。