有很多文章建议使用ngrx / effects来处理异步操作,例如http REST调用。而不是使用效果,为什么我们不能使用常规服务来进行http调用,然后获取该http调用的结果并发送一个动作?这不简化事情吗?
答案 0 :(得分:0)
使用ngrx / effects比使用服务进行http调用然后获取结果并调度操作更简单。如下
效果为服务层提供抽象。我们的组件不需要了解服务(http)层。组件只会调度操作以完成任务。
由于效果基本上是服务,因此代码会被编写一次并重复使用多次。
答案 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