【问题标题】:ReactJS and Promise: How to call catch inside then?ReactJS 和 Promise:那么如何在里面调用 catch?
【发布时间】:2019-03-17 17:28:49
【问题描述】:

所以,我有一个动作创建器(它返回一个函数 - 我使用 redux-thunk)。在创建者返回的函数中,我调用了一个调度方法并将thencatch 方法链接起来。 如下所示:

export function actionCreator(someData) {
    (dispath, getState) => {
        return dispatch(someAction)
        .then(resp => {
            //do something
            // GO TO CATCH
        })
        .catch(err => {
            return err;
        })
    }
}

你看到那边的GO TO CATCH评论了吗?那么,我怎样才能从那里去 catch 块呢?

谢谢!

【问题讨论】:

  • 抛出错误?返回一个 Promise.reject(...)?这是两种方式
  • 什么是do something,为什么需要去抓?请提供更具体的代码以了解您的情况。
  • 不过,如果那是您的实际捕获代码 .. 您可以从 .then 中返回,无论您将抛出什么或 Promise.reject ... 相同的结果
  • 存在用于错误处理的 Catch。您确定要在不出现错误的情况下手动访问该块吗?肯定有更好的方法来实现你不可告人的目标。

标签: javascript reactjs redux es6-promise redux-thunk


【解决方案1】:

如果你想从.then()的正文跳转到下面的.catch(),最简单的方法就是抛出错误:

throw new Error('I meant to blow up here.');

您抛出的错误将传递给 .catch() 的主体(在您的情况下为 err 变量)。

请注意,您的示例已经看起来很可疑:您的 catch 块正在捕获一个错误,然后 返回 它好像错误是一个常规值,这意味着任何基于上游承诺的处理都将假定派送成功。你确定这就是你想要的吗?

【讨论】:

    猜你喜欢
    • 2020-12-30
    • 2018-10-10
    • 1970-01-01
    • 2016-06-08
    • 2015-09-30
    • 1970-01-01
    • 2017-02-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多