Promise 是 JavaScript 中用于处理异步操作的对象。一个 Promise 处于以下几种状态之一:
当一个 Promise 被拒绝(rejected)时,它会传递一个原因(通常是一个错误对象),这个原因可以通过 .catch()
方法捕获。
Promise.all()
。Promise.allSettled()
或 Promise.race()
。// 创建一个被拒绝的 Promise
const promise = new Promise((resolve, reject) => {
reject(new Error('Something went wrong!'));
});
// 捕获被拒绝的 Promise
promise.catch(error => {
console.error(error.message); // 输出: Something went wrong!
});
原因:
.catch()
方法:确保在 Promise 链的末尾使用了 .catch()
方法。.catch()
方法之前执行完毕,可能会导致错误未被捕获。解决方法:
const promise = new Promise((resolve, reject) => {
setTimeout(() => {
reject(new Error('Something went wrong!'));
}, 1000);
});
promise
.then(() => {
console.log('This will not be executed');
})
.catch(error => {
console.error(error.message); // 输出: Something went wrong!
});
解决方法:
const promises = [
Promise.resolve(1),
Promise.reject(new Error('Error 1')),
Promise.resolve(3)
];
Promise.allSettled(promises).then(results => {
results.forEach(result => {
if (result.status === 'fulfilled') {
console.log(result.value);
} else {
console.error(result.reason.message);
}
});
});
通过以上内容,你应该对 JavaScript 中的 Promise rejection 有了更深入的了解,并且知道如何处理相关的问题。
领取专属 10元无门槛券
手把手带您无忧上云