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

时间:2019-01-29 16:12:20

标签: angular cqrs ngxs

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

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

对我来说,如果您要等待某项操作成功/失败,那么简单地观察调度就会更有意义。

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

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

Stackblitz显示了我的首选方法: https://stackblitz.com/edit/angular-ngxs-so-question

此模式是否只是从flux / redux保留下来的,而派发未返回异步操作的句柄?还是我看不到的这种方法有什么好处?

1 个答案:

答案 0 :(得分:1)

到目前为止,根据我对NGXS的经验,我们既使用了您偏爱的方法,也使用了某些明确的成功/失败措施。

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

例如具有捕获某些公共参考数据的状态,但是我们只能在用户登录后加载该状态。我们调度LoginSuccess操作,并使ReferenceDataState对此响应以调用API并提取参考数据。

我们遇到的另一种情况是,调用者想知道一些数据,例如由原始操作创建的实体的ID。 Store的dispatch函数返回带无效返回类型的Observable,因此我们可以使用成功操作来获取该结果值。