为什么要使用ngrx / effects进行http异步调用

时间:2018-01-05 03:17:49

标签: ngrx-effects ngrx-store-4.0

有很多文章建议使用ngrx / effects来处理异步操作,例如http REST调用。而不是使用效果,为什么我们不能使用常规服务来进行http调用,然后获取该http调用的结果并发送一个动作?这不简化事情吗?

2 个答案:

答案 0 :(得分:0)

使用ngrx / effects比使用服务进行http调用然后获取结果并调度操作更简单。如下

  1. 效果为服务层提供抽象。我们的组件不需要了解服务(http)层。组件只会调度操作以完成任务。

  2. 由于效果基本上是服务,因此代码会被编写一次并重复使用多次。

答案 1 :(得分:0)

您可以完美地使用常规服务,然后在组件上分派一个动作。

this.store.dispatch({
   type: "SAVE_DATA",
   payload: data
});
this.saveData(data) // POST request to server
   .map(res => this.store.dispatch({type: "DATA_SAVED"}))
   .subscribe()

@ngrx/effect只是将该逻辑从组件中抽象出来。通过使用功能性的编程方法(纯函数)执行此操作,代码仍然非常易于测试。

我真的建议您阅读这篇文章,因为对于滥用effects

的问题有很多解决方案

Post