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

What is the purpose of the success / failed action events for async actions with ngxs?

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

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

对我来说,如果您想等待 succeed/fail.

的动作,则简单地观察调度更有意义

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

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

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

这种模式是否只是对 flux / redux 的保留,其中调度不 return 异步操作的句柄?或者这种方法有什么我没有看到的好处?

根据我目前使用 NGXS 的经验,我们使用了您首选的方法,在某些情况下还使用了明确的 success/failure 操作。

我们使用显式操作的地方通常是我们有一个状态想要响应另一个状态的变化。

例如具有捕获一些公共参考数据的状态,但我们只能在用户登录后加载它。我们发送一个 LoginSuccess 操作,并让 ReferenceDataState 响应该操作以调用 API 并获取参考数据。

我们遇到的另一种情况是调用者想知道一些数据,例如由发起操作创建的实体的 ID。 Store 的 dispatch 函数 return 是一个具有 void return 类型的 Observable,因此我们可以使用成功操作来获取该结果值。