在redux observable中,每个链式函数应该返回什么?

在redux observable中,每个链式函数应该返回什么?,redux,rxjs,rxjs5,redux-observable,Redux,Rxjs,Rxjs5,Redux Observable,回答我自己的问题: 史诗(在结尾)应该返回它自己的流,这是有道理的 但是中间的链式函数调用呢?我可以返回计划对象,然后在最后返回流吗 我需要返回可观察对象本身还是订阅对象 例如: 这是惯用的“rxjs”还是redux const epic = ($action, store) => action$ .filter(filterFunction) .map(action => processAction(action, store))

回答我自己的问题:

史诗(在结尾)应该返回它自己的流,这是有道理的

但是中间的链式函数调用呢?我可以返回计划对象,然后在最后返回流吗

我需要返回可观察对象本身还是订阅对象

例如:

这是惯用的“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类型,将每种类型映射到一个差异操作,打包请求正文并将其发送到服务器,通知reducer服务器调用成功

processAction:接收X类型的操作,将每个操作映射到一个比较快照(来自存储)的流程,并输出状态树之间的累积差异


processResult:接收差异并创建不会是惯用rxjs的有效负载请求主体,因为
map
应该没有副作用;在你的例子中,它被严重滥用。我不相信它完全符合你的意图


如果你想描述你想做的事情,我很乐意推荐一些模式:)

这不是惯用的rxjs,因为
map
应该没有副作用;在你的例子中,它被严重滥用。我不相信它完全符合你的意图


如果你想描述你想做什么,我很乐意提出一些模式:)

我编辑了我的问题,但我不确定是否需要适当放大/缩小。每个操作都表示要拍摄快照,因此总体输出最终需要将“diff”作为PUT发送到服务器,然后通知reducer同步成功flatMap之前链接的中间映射可以只输出POJO(只要flatMap接收到已处理/格式化的请求体),但我认为flatMap应该是可观察的。我编辑了我的问题,尽管我不确定是否需要适当放大/缩小。每个操作都表示要拍摄快照,因此总体输出最终需要将“diff”作为PUT发送到服务器,然后通知reducer同步成功flatMap之前链接的中间映射可以只输出POJO(只要flatMap接收到已处理/格式化的请求体),但我认为flatMap会期待一个可观察的。