使用promises时为什么最后一次调用?

Bug*_*rUK 2 javascript node.js

我在Promises上观看这段视频(代码约36分钟),但我对一些代码感到困惑:

getUser('mjackson')
.then(getTweets)
.then(updateStatus)
.then(undefined, handleError);
Run Code Online (Sandbox Code Playgroud)

理解这个问题的原因是为什么最后一次then调用?为什么它undefined作为第一个参数传递?

如果getTweets()失败,则updateStatus()永远不会被调用.这就是为什么我很困惑为什么then如果第二个(包含的那个updateStatus())不是最后一个被调用的原因.

我知道handleError是一个回调,我只是不明白为什么undefined通过.

我希望这是有道理的.

JLR*_*she 5

任何then具有作为第二个参数提供的函数的任何函数都将捕获并处理承诺链中更远的任何被拒绝的承诺.

所以,如果getUser还是getTweets还是updateStatus失败,错误将被处理handleError.

这段代码undefined作为第一个参数传递,因为在这种情况下updateStatus,编写它的人想做的最后一件事,如果成功的话,没有什么可做的.

大多数承诺库和ES6承诺标准提供的.catch(...)方法实际上只是一个简写.then(undefined, ...):

getUser('mjackson')
.then(getTweets)
.then(updateStatus)
.catch(handleError);
Run Code Online (Sandbox Code Playgroud)