Promise对象状态属性
1. pending
当创建一个Promise对象时,初始状态是pending
(待定)状态。这表示Promise对象尚未完成,异步操作仍在进行中。
2. fulfilled
当异步操作成功完成时,Promise对象的状态将从pending
转变为fulfilled
(已完成)状态。在这种状态下,Promise对象将包含异步操作的结果值。
3. rejected
当异步操作失败时,Promise对象的状态将从pending
转变为rejected
(已失败)状态。在这种状态下,Promise对象将包含一个错误对象,用于描述发生的错误。
示例代码
下面是一个示例代码,演示了Promise对象的状态属性和它们的转换:
代码语言:javascript复制// 创建一个简单的异步操作,返回一个Promise对象
function performAsyncTask() {
return new Promise((resolve, reject) => {
setTimeout(() => {
const success = Math.random() < 0.5; // 模拟随机成功或失败
if (success) {
resolve('Async operation succeeded.'); // 异步操作成功,将Promise状态设置为fulfilled
} else {
reject(new Error('Async operation failed.')); // 异步操作失败,将Promise状态设置为rejected
}
}, 2000);
});
}
// 调用异步操作并处理不同状态
const promise = performAsyncTask();
console.log('Promise status:', promise.status); // 输出初始状态,应为pending
promise
.then(result => {
console.log('Promise status:', promise.status); // 输出fulfilled状态
console.log('Result:', result); // 输出异步操作的结果
})
.catch(error => {
console.log('Promise status:', promise.status); // 输出rejected状态
console.error('Error:', error); // 输出发生的错误
});
在上述示例中,我们首先创建了一个performAsyncTask
函数,它返回一个Promise对象,并模拟了一个异步操作。异步操作的成功与否是随机决定的。
然后,我们调用performAsyncTask
函数,并通过.then()
方法和.catch()
方法分别处理Promise对象的fulfilled
和rejected
状态。
在控制台输出中,我们可以观察到Promise对象的状态属性的变化。初始状态为pending
,当异步操作成功完成时,状态变为fulfilled
,并输出异步操作的结果。当异步操作失败时,状态变为rejected
,并输出错误信息。