Javascript 获得行动结果的最佳方式是什么?

Javascript 获得行动结果的最佳方式是什么?,javascript,typescript,design-patterns,redux,flux,Javascript,Typescript,Design Patterns,Redux,Flux,我很好奇,获得行动结果是否是一种有效的方法,如果是,那么如何做到这一点 例如,假设我有一个用于创建实体的表单页面,在成功创建实体后,我希望将用户重定向到实体的详细视图,否则(失败时)通过错误消息更新表单。我希望在不混淆应用程序层的情况下执行该操作(例如,在成功后不在epic/effect中重定向用户) 我有几种解决这个问题的方法: (可观察模式)发送一个“触发”动作(实体添加),然后发送一个成功(实体添加)或失败(实体添加)动作到我的epic/效果中的某个地方,等待失败或成功行动并采取行动-这种

我很好奇,获得行动结果是否是一种有效的方法,如果是,那么如何做到这一点

例如,假设我有一个用于创建实体的表单页面,在成功创建实体后,我希望将用户重定向到实体的详细视图,否则(失败时)通过错误消息更新表单。我希望在不混淆应用程序层的情况下执行该操作(例如,在成功后不在epic/effect中重定向用户)

我有几种解决这个问题的方法:

  • (可观察模式)发送一个“触发”动作(
    实体添加
    ),然后发送一个成功(
    实体添加
    )或失败(
    实体添加
    )动作到我的epic/效果中的某个地方,等待失败或成功行动并采取行动-这种方法有一个明显的缺点:可能同时创建其他实体,在这种情况下如何区分实体的失败/成功行动

  • (回调模式)调度一个带有额外回调参数的触发器操作,该参数应该在操作结果确定时调用,这种方法也有一个缺点(虽然不如前一种方法大):可能会创建回调地狱

  • (服务模式)在这种情况下放弃使用flux,直接使用服务,设计缺点:混合应用层


  • 我很高兴听到任何想法。

    我多次成功地使用了第二个选项(将回调附加到启动操作)。在我看来,这是最好的折衷办法。我看不到深度嵌套回调(“回调地狱”)的风险,因为通常,我只需要触发一个动作,然后做一些简单的事情,比如导航到另一个页面。

    所以从那时起我一直在使用第二个选项,我不后悔,但现在我认为它可能有一些缺点,这是因为
    函数
    类型不是原语,这意味着您不能在商店之间“传输”您的操作(例如,当您想在worker中拥有一个商店时),实际上它与
    redux thunk
    具有相同的缺点,因此在这种情况下,第一个选项应该是您的选择,但是您应该为您的操作分配某种ID以及它的类型,以区分所有较小的部分