返回
Promise.resolve()让成功变失败?Promise的resolve、reject、catch方法与Promise的 Promise 状态
前端
2023-09-25 17:45:38
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。