我在这样的承诺链中某处有一个被拒绝的承诺。我知道以下代码将类似地工作。
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) => {})
链接诺言
答案 0 :(得分:4)
Promise.catch()
等于Promise.then(null, callback)
。您可以互换使用它们。但是Promise.catch更具描述性,并具有以下优点:
.then(null, callback)
相比,当您阅读.catch时更容易知道这是一种错误处理机制。null
作为.then()
的第一个参数最后,没有功能上的区别。但是,.catch()
更具描述性,代码更少,因此更上乘。
对于诺言链,由于它们在功能上相似,因此没有任何作用。