我正在尝试在NGRX效果中订阅2个服务器端事件,然后将结果合并到单个对象中,然后将操作中的有效负载分派到存储中。我引用的是this post,但我无法找到在效果内执行此操作的任何示例。
1)如何在我的效果范围内创建(2)可观察的新事件源
2)如何将它们组合到一个对象中,以便每次服务器发出事件时,它都等待直到每个事件到达,然后使用这些值发出新的加载操作。我研究了Forkjoin,MergeMap和Zip。到目前为止,Zip似乎是最好的,因为您可以等待两个可观察对象,但它仍将数据流传输到数组中。
这是我当前的过程和伪代码:
@Effect()
getTraceData = this.actions$
.ofType(appActions.GET_PLOT_DATA)
.pipe(
switchMap((action$: appActions.GetPlotDataAction) => {
// instead of http post, return two event sources
// new EventSource('/data1') + new EventSource('/data2')
return this.http.post(
`http://${this.url}/low-res-data`,
action$.payload.getJson(),
{ responseType: 'json', observe: 'body', headers: this.headers });
}),
// not sure if I should use forkJoin or MergeMap
// to make the data = { data1, data2}
map((plotData) => {
return {
type: appActions.LOAD_PLOT_DATA_SUCCESS,
payload: plotData
}
}),
)