отвечая на свой вопрос:
имеет смысл, что эпос (в конце) должен возвращать собственный поток
а как насчет связанных между собой вызовов функций? Могу ли я вернуть объекты плана, а затем вернуть поток в конце?
мне нужно вернуть сам наблюдаемый объект или объект подписки?
Например:
это идиоматический "rxjs" или наблюдаемый redux?
const epic = ($action, store) =>
action$
.filter(filterFunction)
.map(action => processAction(action, store))
.map(processResult)
.flatMap(apiCall)
.map(res => ({ type: 'DONE', payload: res }))
const processAction = (action, store) =>
Observable.create(
obs => {
const result = // do something with store and action
return obs.next(result)
})
const processResult = result =>
result.subscribe(res => {
const newRes = // do some other stuff
return Observable.from({ newRes })
})
epic: принимает actionStream, фильтрует тип X, сопоставляет каждый тип с операцией diff, упаковывает и отправляет тело запроса на сервер, сообщает редуктору, что вызов сервера был успешным
processAction: принимает действия типа X, сопоставляет каждое действие с процессом, который сравнивает моментальные снимки (из хранилища) и выводит совокупный DIFF между деревьями состояний.
processResult: получает DIFF и создает тело запроса полезной нагрузки