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

What is the best way to get an action result?

我很好奇获取操作结果是否是一种有效的方法,如果是那么该怎么做?

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

我想到了一些解决这个问题的方法:

  1. (可观察模式)调度一个 "trigger" 动作 (entity_add),然后调度一个成功 (entity_add_success) 或失败 (entity_add_failure)在我的 epic/effect 中某处执行操作,等待失败或成功操作并执行操作 - 这种方法有一个明显的缺点:可能同时创建其他实体以及如何区分实体的 failure/success 操作在这种情况下?

  2. (callback pattern) 派发一个带有附加回调参数的触发动作,当动作结果确定时应该调用该参数,这种方法也有一个缺点(虽然没有前一个那么大):创建回调地狱的可能性。

  3. (service pattern) 那样就放弃使用flux,直接使用services,设计缺陷:混合应用层

我很乐意听到任何想法。

我多次成功地使用了第二个选项(将回调附加到启动操作)。我认为这是最好的权衡。我没有看到深度嵌套回调的风险 ("callback hell"),因为通常,我只需要触发一个动作,然后做一些简单的事情,比如导航到另一个页面。