返回

Promise.resolve()让成功变失败?Promise的resolve、reject、catch方法与Promise的 Promise 状态

前端

Promise的三种状态

Promise有三种状态:pending、fulfilled和rejected。

  • pending:表示Promise尚未完成。
  • fulfilled:表示Promise已成功完成。
  • rejected:表示Promise已失败完成。

Promise的resolve、reject和catch方法

Promise有三个方法:resolve、reject和catch。

  • resolve:用于将Promise的状态从pending改为fulfilled。
  • reject:用于将Promise的状态从pending改为rejected。
  • catch:用于处理Promise的状态为rejected时的情况。

Promise的状态转换

Promise的状态可以从pending转换为fulfilled或rejected,但不能从fulfilled或rejected转换为pending。

  • 当Promise的resolve方法被调用时,Promise的状态从pending转换为fulfilled。
  • 当Promise的reject方法被调用时,Promise的状态从pending转换为rejected。
  • 当Promise的状态为rejected时,可以调用Promise的catch方法来处理这种情况。

Promise的resolve、reject和catch方法的示例

const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('成功了!');
  }, 1000);
});

promise.then(result => {
  console.log(result); // 输出:'成功了!'
});

promise.catch(error => {
  console.log(error); // 不会被调用
});

Promise.resolve()也可以返回失败的Promise

Promise.resolve()方法可以返回一个成功的Promise,也可以返回一个失败的Promise。如果Promise.resolve()方法的参数是一个Promise对象,那么Promise.resolve()方法将返回该Promise对象。如果Promise.resolve()方法的参数是一个非Promise对象,那么Promise.resolve()方法将返回一个成功的Promise,该Promise对象的value属性将等于Promise.resolve()方法的参数。

const promise1 = Promise.resolve(new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve('成功了!');
  }, 1000);
}));

promise1.then(result => {
  console.log(result); // 输出:'成功了!'
});

const promise2 = Promise.resolve('成功了!');

promise2.then(result => {
  console.log(result); // 输出:'成功了!'
});

const promise3 = Promise.resolve(new Promise((resolve, reject) => {
  setTimeout(() => {
    reject('失败了!');
  }, 1000);
}));

promise3.catch(error => {
  console.log(error); // 输出:'失败了!'
});

总结

Promise是一个非常强大的工具,可以帮助我们轻松地处理异步操作。Promise有三种状态:pending、fulfilled和rejected。Promise有三个方法:resolve、reject和catch。Promise.resolve()方法可以返回一个成功的Promise,也可以返回一个失败的Promise。