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

标签 javascript typescript design-patterns redux flux

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

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

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

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

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

  3. (服务模式)那样的话就放弃使用flux,直接使用服务,设计缺陷:混合应用层

我很乐意听到任何想法。

最佳答案

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

关于javascript - 获得行动结果的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54813359/

相关文章:

Java:为什么使用方法而不是构造函数?

javascript - 如何调试时序问题 - 顺序 AJAX 请求、异步链等

javascript - 为什么我的 this.setState 不更新数组

angular - 我应该取消订阅根 Angular 组件中的可观察对象吗?

javascript - 将 javascript 页面级变量传递到捆绑的 Angular2 RC 1 应用程序中

java - 如何实现原型(prototype)模式?

python - 当规范坚持时如何避免类耦合

javascript - 使用 JavaScript 正则表达式以编程方式更改所有文件 header 中的版权年份

javascript - Bootstrap 中的分阶段捐赠表格

javascript - 在 Angular2 上传播计算值的正确方法