【发布时间】:2018-03-16 04:49:54
【问题描述】:
我需要为多个图表加载数据。我还想仅在图表设置更改 (distinctUntilChanged) 并删除较旧的请求(不再反映当前设置 - 这就是 switchMap 所做的)时发送请求。在rxjs 和redux-observable 中,它看起来像这样:
export const chartsEpic = action$ =>
action$
.ofType('CHART_DATA_REQUESTED')
// group actions by chart id...
.groupBy(action => action.meta.chartId)
// ...and for each chart:
.map(actionsByChart$ =>
actionsByChart$
// continue only if settings change
.distinctUntilChanged((a1, a2) => compare(a1.payload.settings, a2.payload.settings))
// load data, but drop old requests when we get new settings
.switchMap(action =>
Observable.fromPromise(fetchChartData(action.payload.settings))
.map(data => ({type: 'CHART_DATA.SUCCESS', payload: data, meta: action.meta))
.catch(error => Observable.of({type: 'CHART_DATA.FAILURE', payload: error, meta: action.meta}))
)
)
// combine actions for all charts into one output stream
.mergeAll();
redux-saga 中的可比代码是什么?
【问题讨论】:
标签: javascript reactjs redux redux-saga redux-observable