Promise then 第二个参数和 Promise.catch 的区别是什么?
参考答案:
Promise.then 的第二个参数和 Promise.catch 都用于处理 Promise 的拒绝(rejected)情况,但它们的使用方式和作用有所不同。以下是它们的区别:
1. Promise.then 的第二个参数
作用:用于处理 Promise 被拒绝(rejected)时的情况。
用法:
javascriptpromise.then(onFulfilled, onRejected);onFulfilled:可选的回调函数,Promise 被解决(fulfilled)时调用。onRejected:可选的回调函数,Promise 被拒绝(rejected)时调用。
示例:
javascriptnew Promise((resolve, reject) => reject('Error')) .then( value => console.log('Fulfilled:', value), error => console.log('Rejected:', error) // 处理拒绝的情况 );特点:
then方法接收两个参数,第一个是成功回调,第二个是失败回调。只有当then的第一个参数不为undefined时,第二个参数才会被触发。
2. Promise.catch
作用:专门用于处理 Promise 被拒绝(rejected)时的情况。
用法:
javascriptpromise.catch(onRejected);onRejected:回调函数,当 Promise 被拒绝时调用。
示例:
javascriptnew Promise((resolve, reject) => reject('Error')) .catch(error => console.log('Caught Error:', error)); // 处理拒绝的情况特点:
catch方法是then方法的语法糖,专门用于处理拒绝的情况。它可以与then链式调用配合使用,使得代码更加清晰和符合逻辑。
题目要点:
- 功能:
then的第二个参数和catch都用于处理拒绝的情况,但catch更专注于处理错误,通常用在链式调用中来捕获和处理所有错误。 - 链式调用:
catch更常用在链式调用中,能够捕获前面then链中的任何错误,而then的第二个参数只能处理then本身的错误。 - 可读性:
catch提高了代码的可读性,使得错误处理逻辑更加集中,特别是在处理多个链式操作时。