promise有哪几种状态?是如何变化的?

64 阅读1分钟

"Promise有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。Promise的状态由异步操作的结果决定,一旦Promise的状态发生变化,就不会再改变。Promise对象的状态由异步操作决定,可以通过resolve和reject来改变Promise的状态。resolve会将Promise的状态从pending变为fulfilled,而reject会将Promise的状态从pending变为rejected。以下是一个简单的示例:

// 创建一个Promise
let myPromise = new Promise((resolve, reject) => {
  // 异步操作
  let success = true; // 假设异步操作成功
  if (success) {
    resolve('成功'); // 将Promise状态从pending变为fulfilled
  } else {
    reject('失败'); // 将Promise状态从pending变为rejected
  }
});

// 调用Promise
myPromise.then((value) => {
  console.log(value); // 如果状态变为fulfilled,则输出“成功”
}).catch((reason) => {
  console.log(reason); // 如果状态变为rejected,则输出“失败”
});

在上面的示例中,当异步操作成功时,调用resolve将Promise状态从pending变为fulfilled;当异步操作失败时,调用reject将Promise状态从pending变为rejected。然后可以通过then方法和catch方法来处理fulfilled和rejected状态下的结果。

在实际开发中,Promise的状态变化为我们提供了一种更加优雅的方式来处理异步操作的结果,避免了回调地狱的问题,使得代码更加清晰和易于维护。"