代码之家  ›  专栏  ›  技术社区  ›  Michael

使用ngxs的异步操作的成功/失败操作事件的目的是什么?

  •  1
  • Michael  · 技术社区  · 6 年前

    ngxs的示例应用程序通常为每个异步操作分配离散的成功/失败操作。

    例如: https://github.com/tommythongnguyen/Ngxs-Pizza-Order/blob/master/src/app/products/store/pizzas.state.ts#L45

    对我来说,如果您想等待操作成功/失败,那么只需观察调度就更有意义了。

    对于大多数情况,您只关心失败,因为要从存储中读取数据,我希望使用独立的选择,而不是查看操作流。

    在处理故障方面,我认为通常是调度员对处理故障感兴趣。

    https://stackblitz.com/edit/angular-ngxs-so-question

    这个模式是否只是flux/redux的一个延迟,其中调度不会返回异步操作的句柄?或者说这种方法有什么好处我没有看到?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Garth Mason    6 年前

    根据我目前使用NGX的经验,我们既使用了您喜欢的方法,也在某些情况下使用了明确的成功/失败操作。

    我们使用显式动作的地方通常是一个州想要对另一个州的变化做出反应的地方。

    例如,具有捕获某些公共参考数据的状态,但我们只能在用户登录后加载该状态。我们派了一个 LoginSuccess 行动,并有 ReferenceDataState 对此做出响应以调用API并获取引用数据。

    我们遇到的另一种情况是,调用方希望知道一些数据,例如原始操作创建的实体的ID。商店的 dispatch 函数返回一个可观察的void返回类型,所以我们可以使用一个success操作来获取结果值。