javascript - 使用 redux-thunk 和 redux-observable

标签 javascript reactjs rxjs5 redux-thunk redux-observable

我正在使用 redux-thunk 来管理我的 React 应用程序中的异步内容,我想使用 redux-observable 来更轻松地管理复杂的异步流(例如连接多个 Ajax 调用)。有没有办法在不修改已经完成的情况下这样做?

这是我的意思的一个例子:

const fetchSomeData = () => {
    return (dispatch, getState) => {
        doAnAjaxCall((err, response) => {
            if (err) return dispatch({type: 'ERROR', err})
            // do something
            return dispatch({type: 'SUCCESS', response})
        })
    }
}

是否可以在史诗中使用fetchSomeData
由于 redux-thunk 是基于 promise 的 redux-observable 应该允许这样做,我是否遗漏了什么?

最佳答案

是的!你完全可以一起使用它们。只需将 redux-thunk 中间件放在 redux-observable 中间件之前即可。

applyMiddleware(thunkMiddleware, epicMiddleware)

https://stackblitz.com/edit/redux-observable-playground-8c7pd9?file=ping-pong.js

Redux 按照中间件作为参数提供的顺序应用中间件,因此在这种情况下,我们希望 thunk 中间件吸收任何分派(dispatch)的 thunk,以便 thunk 函数本身永远不会达到 redux-observable(仅纯操作)。但是你的 epics 仍然可以发送 thunk,因为 redux-observable 中间件在底层使用了 store.dispatch

关于javascript - 使用 redux-thunk 和 redux-observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48510274/

相关文章:

javascript - Mootools 中的 outerWidth 等价物

javascript - 加载数组数据 init immutable.js

javascript - 在 onChange/onClick 之后 React 重新渲染部分页面

angular - Response.json() 使用接口(interface)绑定(bind)到单个对象 - RxJs/Observable 失败

angular - 如何在 POST 后刷新 angular2 中的可观察对象

javascript - 如何从该函数中删除第一个 if 语句?

javascript - 即使应该在那里,也无法访问对象属性

javascript - 在 AngularJS 中为我​​的 SessionsController 提供 session 服务

javascript - 是否可以从模块声明中导入类型?

typescript - [Typescript][RxJS] 为什么返回部分类型的可观察对象时没有类型错误?