为什么要使用Promise.catch()而不是Promise.then()

时间:2018-07-22 20:49:44

标签: javascript es6-promise

我在这样的承诺链中某处有一个被拒绝的承诺。我知道以下代码将类似地工作。

let promise = Promise.resolve(3);
let p1 = promise.then(() => 2)
                .then(() => {throw 'some error'})
                .then(null, (err) => {console.log(err)})


let p2 = promise.then(() => 2)
                .then(() => {throw 'some error'})
                .catch((err) => {console.log(err)})

从概念上讲,与.then(null, (error) {})而不是.catch((err) => {})链接诺言

1 个答案:

答案 0 :(得分:4)

Promise.catch()等于Promise.then(null, callback)。您可以互换使用它们。但是Promise.catch更具描述性,并具有以下优点:

  1. 与阅读.then(null, callback)相比,当您阅读.catch时更容易知道这是一种错误处理机制。
  2. 实际上更少的代码,因为您可以省略null作为.then()的第一个参数

最后,没有功能上的区别。但是,.catch()更具描述性,代码更少,因此更上乘。

对于诺言链,由于它们在功能上相似,因此没有任何作用。