gpt4 book ai didi

javascript - 使用 promise 时,为什么最后一个被调用?

转载 作者:搜寻专家 更新时间:2023-11-01 00:11:42 24 4
gpt4 key购买 nike

我在看this video (代码大约 36 分钟)关于 Promises,但我对一些代码感到困惑:

getUser('mjackson')
.then(getTweets)
.then(updateStatus)
.then(undefined, handleError);

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

如果 getTweets() 失败,则永远不会调用 updateStatus()。这就是为什么我对为什么最后一个 then 被调用而第二个(包含 updateStatus())没有被调用感到困惑。

我知道 handleError 是一个回调,我只是不明白为什么 undefined 被传递。

我希望这是有道理的。

最佳答案

任何then使用作为第二个参数提供的函数将捕获并处理 promise 链中任何被拒绝的 promise 。

所以如果getUsergetTweetsupdateStatus失败,错误将在handleError中处理.

此代码正在传递 undefined作为第一个参数,因为在本例中为 updateStatus是编写它的人最不想做的事情,如果成功了,就没有什么可做的了。

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

getUser('mjackson')
.then(getTweets)
.then(updateStatus)
.catch(handleError);

关于javascript - 使用 promise 时,为什么最后一个被调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36664966/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com