Я пытаюсь подписаться на 2 события на стороне сервера внутри эффектов NGRX, затем объединить результаты в один объект и отправить полезную нагрузку в действии в хранилище.Я ссылаюсь на этот пост , но я не смог найти никаких примеров, как сделать это в рамках эффекта.
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
}
}),
)