Promise: then 与 catch
这些代码片段是否相等?换句话说,它们在任何情况下,对于任何处理函数,行为是否相同?
promise.then(f1).catch(f2);
对比
promise.then(f1, f2);
简短的回答是:否,它们不相等
区别在于,如果 f1
中发生错误,那么它将由这里的 .catch
处理
promise
.then(f1)
.catch(f2);
…但这里不会
promise
.then(f1, f2);
这是因为错误会向下传递,而在第二个代码片段中,f1
下面没有链。
换句话说,.then
将结果/错误传递给下一个 .then/catch
。因此,在第一个示例中,下面有一个 catch
,而在第二个示例中没有,因此错误未处理。