Redux 为什么要在中间件内部处理可观察对象,而不是调度组合可观察对象的输出?

Redux 为什么要在中间件内部处理可观察对象,而不是调度组合可观察对象的输出?,redux,rxjs,reactive-extensions-js,redux-observable,Redux,Rxjs,Reactive Extensions Js,Redux Observable,当我看到所有这些中间件鼓励你发送一个异步发出其他动作的动作时,我感觉自己就像在吃疯狂的药丸。我认为异步可以(也许应该?)在商店之前完成 对我来说,Rx的好处是,你可以采取一个传入的动作流,将其中一些动作映射到其他动作的可观察对象,并将整个结果平面映射,以获得一系列有序的事件。然后,您可以通过将每个事件分派给存储来将结果流链接到存储中 将异步放入操作中不仅会采用简单的Redux模型并使其复杂化,而且这意味着在进行时间旅行调试时,可能会触发新的AJAX请求(这会在清理时重写历史记录?) 我想我想把R

当我看到所有这些中间件鼓励你发送一个异步发出其他动作的动作时,我感觉自己就像在吃疯狂的药丸。我认为异步可以(也许应该?)在商店之前完成

对我来说,Rx的好处是,你可以采取一个传入的动作流,将其中一些动作映射到其他动作的可观察对象,并将整个结果平面映射,以获得一系列有序的事件。然后,您可以通过将每个事件分派给存储来将结果流链接到存储中

将异步放入操作中不仅会采用简单的Redux模型并使其复杂化,而且这意味着在进行时间旅行调试时,可能会触发新的AJAX请求(这会在清理时重写历史记录?)

我想我想把RxJS的功能放在商店前面对我来说很有意义,但我不明白为什么要把它放在图书馆里 商店的另一面是有意义的。我同意观测值是史诗的一个很好的模型,但我想知道Redux是否在关注它永远不应该知道的事情


背景:我已经看了这段视频,学习Rx已经有几年了,Redux已经有半年了。

商店增强器相互缠绕。使用Redux的
compose
函数,传递到compose的增强子从右到左排序。因此,如果我使用
const storeEnhancer=compose(applyMiddleware(…middleware),DevTools.instrument())
,DevTools增强器将环绕真实的存储,中间件增强器将环绕DevTools增强器

这意味着时间旅行调试将只使用通过所有中间件的操作,重放这些操作将不会再次通过中间件链。换句话说,只有实际影响存储的操作才会被重播

另一个要考虑的是,中间件之类的东西允许访问商店的API,用于调度和检查状态,并且可以被认为是“内部”的商店,但最终关键是它们在“真实”商店本身之上的层处理。 您可能想阅读Dan关于中间件和异步行为的优秀著作:和,这有助于澄清中间件的原因,以及其他链接和解释