Promise对象状态属性介绍

2023-05-23 10:01:55 浏览数 (2)

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对象的fulfilledrejected状态。

在控制台输出中,我们可以观察到Promise对象的状态属性的变化。初始状态为pending,当异步操作成功完成时,状态变为fulfilled,并输出异步操作的结果。当异步操作失败时,状态变为rejected,并输出错误信息。

0 人点赞