首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >停止Axios Promise Chain

停止Axios Promise Chain
EN

Stack Overflow用户
提问于 2018-07-14 01:45:48
回答 2查看 648关注 0票数 1

打破这条链条的正确方法是什么?例如,如果我在catch中,我不希望执行以下两个then

我曾经把catch放在最后,但后来把它移到了前面,觉得这可能会有帮助。事实并非如此。

代码语言:javascript
运行
复制
return axios
  .post(url, data)
  .catch(error => {
    const message = getBannerTextFailureMessage(liability, toStatus)
    dispatch(showBanner(message, bannerConstants.typeError))
  })
  .then(response => {
    return dispatch(updateLiabilitiesComplete())
  })
  .then(response => {
    const message = getBannerTextSuccessMessage(liability, toStatus)
    dispatch(showBanner(message, bannerConstants.typeSuccess))
  })
EN

回答 2

Stack Overflow用户

发布于 2018-07-14 02:19:42

.catch捕获promise链之前的任何部分,并在.catch未捕获后离开后面的.then而不使用reject函数(除非有另一个.catch)。这意味着当.catch在链的末尾时,你的链可能在某个.then中失败了,当你没有捕获它时,可能会向控制台抛出promise错误(紧跟在.post之后的.catch)。

只需删除(临时) .catch,并从控制台日志中找出它出现故障的部分。

票数 1
EN

Stack Overflow用户

发布于 2018-07-14 02:34:19

在解析promise之后,catch用于捕获来自任何then块的任何错误。因此,如果您将一个catch块放在then之后,将会捕获前一个then块中可能出现的第一个错误。所以在你使用过的地方使用catch是没有意义的,而且第一个then块在解析后会从promise中获取返回值。

在catch块中:

执行console.log(error)以找出您得到的错误。

此外,要从Promise解析函数中检索值,请使用eventlisteners(断开链接)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51330377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档