有很多文章建议使用 ngrx/effects 来处理异步操作,例如 http REST 调用。与其使用效果,为什么我们不能只使用常规服务进行 http 调用,然后获取该 http 调用的结果并调度操作?这不是简化事情吗?
您可以完美地使用常规服务,然后在组件上调度操作,就像这样。
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
只是将此逻辑从组件中抽象出来。通过使用函数式编程aproach(纯函数(来做到这一点,代码仍然非常容易测试。
我真的建议阅读这篇文章,因为有很多解决方案可以解决滥用effects
发布
ngrx/effects 比使用服务进行 http 调用,然后获取结果并调度操作更简单。如下
效果为服务层提供抽象。我们的组件不需要知道服务(http(层。组件只会调度操作来完成工作。
由于效果基本上是服务,因此代码编写一次并多次重用。