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

时间:2019-02-21 17:55:15

标签: javascript typescript design-patterns redux flux

我很好奇,如果获得一个行动结果是一种有效的方法,那么这是怎么做的呢?

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

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

  1. (可观察模式)调度一个“触发”操作(entity_add),然后调度一个成功(entity_add_success或失败(entity_add_failure)操作在我的史诗/效果,等待失败或成功的操作并执行操作-这种方法有一个明显的缺点:可能同时创建其他实体,以及在这种情况下如何区分实体的失败/成功行为?

  2. (回调模式)调度带有附加回调参数的触发动作,该动作应在确定动作结果时调用,这种方法也有一个缺点(虽然不如前一个大):创建回调的可能性地狱。

  3. (服务模式)在那种情况下放弃使用流量,直接使用服务,设计缺点:混合应用程序层

我很高兴听到任何想法。

1 个答案:

答案 0 :(得分:1)

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