2

当您需要从 http 请求将数据添加到应用程序中时,我听说它的好做法是:

  1. 调度一个动作,它激活一个@Effect.
  2. @Effecthttp请求中获取数据。
  3. 然后这会触发另一个动作
  4. 然后最终更新商店。

这背后的基本原理是因为 http 调用是一种副作用,因此应该由@ngrx/effects库处理。

这个好吗?我发现这是有问题的,因为一旦发送了第一个操作,我不知道它是成功还是失败。我知道的唯一方法是我State是否有“hasErrorHappened”属性或类似的东西。而且我不相信拥有这样的财产是一件好事

还是更好:

  1. 创建一个执行http调用的服务,该服务获取数据
  2. 使用该数据在服务后更新商店
4

2 回答 2

0

我认为这取决于您为什么想知道效果失败。如果您只想向用户指示请求失败,您可以在实际调度操作的组件中使用超时,或者如果您想向用户显式显示错误,这并不总是一个好主意,您实际上可以添加一个 lastError 并在组件等待响应时监听它。我不认为 lastError 属性在第二种情况下是一件坏事,因为存储应该反映您的应用程序的状态,并且发生的错误可能是此状态的一部分。

于 2018-02-26T07:20:34.177 回答
-1

是的,你会那样做!

只需添加另一个错误处理动作,完成 3 个动作。

示例:ADD_TODO ADD_TODO_SUCCESS ADD_TODO_FAILED

于 2017-12-19T22:23:35.873 回答