Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用可观察到的redux thunk_Javascript_Reactjs_Rxjs5_Redux Thunk_Redux Observable - Fatal编程技术网

Javascript 使用可观察到的redux thunk

Javascript 使用可观察到的redux thunk,javascript,reactjs,rxjs5,redux-thunk,redux-observable,Javascript,Reactjs,Rxjs5,Redux Thunk,Redux Observable,我正在使用redux thunk来管理react应用程序中的异步内容,我希望使用redux observable来更轻松地管理复杂的异步流(例如,concat多个Ajax调用)。有没有一种方法可以在不修改已经完成的内容的情况下执行此操作 这里有一个例子来说明我的意思: const fetchSomeData = () => { return (dispatch, getState) => { doAnAjaxCall((err, response) =>

我正在使用redux thunk来管理react应用程序中的异步内容,我希望使用redux observable来更轻松地管理复杂的异步流(例如,concat多个Ajax调用)。有没有一种方法可以在不修改已经完成的内容的情况下执行此操作

这里有一个例子来说明我的意思:

const fetchSomeData = () => {
    return (dispatch, getState) => {
        doAnAjaxCall((err, response) => {
            if (err) return dispatch({type: 'ERROR', err})
            // do something
            return dispatch({type: 'SUCCESS', response})
        })
    }
}
是否可以在epic中使用
fetchSomeData

既然redux thunk是基于承诺的redux observable应该允许这样做,我是不是遗漏了什么?

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

applyMiddleware(thunkMiddleware, epicMiddleware)


Redux按照作为参数提供的顺序应用中间件,因此在本例中,我们希望thunk中间件吸收任何已调度的thunk,以便thunk函数本身永远不会达到Redux可观察的程度(仅纯操作)。但是您的epics仍然可以发送thunks,因为redux observable中间件使用了
存储。在引擎盖下发送

我认为您仍然需要在epic注册方面做一些工作。您可以使用observable包装现有承诺。但我建议使用redux observable和remove redux thunk这两种方法都很好,而且处理异步操作的方式也不同。我喜欢redux observable,所以我可能会有偏见。这个例子不再适用于最新的redux observable版本。请帮助使用epicMiddleware进行更新。运行(rootEpic)@jayphelps