Redux传奇:Redux传奇工作原理的内部部分

Redux传奇:Redux传奇工作原理的内部部分,redux,middleware,redux-saga,Redux,Middleware,Redux Saga,我知道redux中间件位于调度操作和调用reducer之间。与redux传奇相比,理解redux thunk很容易。我了解生成器以及如何使用它们来编写依赖于异步调用的代码,就像编写同步代码一样。我还知道,在这种模式下,发电机变成了消费者。生成器向redux saga中间件生成指令。中间件处理请求并返回结果。我不明白saga中间件在单线程执行中是如何实现的。还有为什么我们称之为runroot saga方法?这是一种设置方法还是它真的开始运行传奇?由于我们可以使用put-effect从sagas中分

我知道redux中间件位于调度操作和调用reducer之间。与redux传奇相比,理解redux thunk很容易。我了解生成器以及如何使用它们来编写依赖于异步调用的代码,就像编写同步代码一样。我还知道,在这种模式下,发电机变成了消费者。生成器向redux saga中间件生成指令。中间件处理请求并返回结果。我不明白saga中间件在单线程执行中是如何实现的。还有为什么我们称之为runroot saga方法?这是一种设置方法还是它真的开始运行传奇?由于我们可以使用put-effect从sagas中分派操作,所以它是否会将整个执行过程带回中间件开始的位置。有人能澄清整个事件是如何发生的吗

由于web API和事件循环(请参阅)与javascript中的任何其他异步内容相同,因此它在单线程中是可能的<代码>sagaMiddleware.run确实开始了sagas,尽管您通常从设置自己的东西开始(比如启动watcher sagas等)。是的,当使用
put
effect时,操作会传递到redux和任何其他可能感兴趣的中间件,包括redux saga。@MartinKadlec既然还没有调度任何操作,为什么run会开始运行sagas?99%的情况下,它用于启动watcher sagas。当使用redux saga库时,您必须创建一个观察者,该观察者将监听您想要的操作(
yield takeEvery(ACTION,handleActionSaga)
)。否则,当有人最终发出一个动作时,就没有办法处理它了。除此之外,可能还有其他一些事情要做,比如从本地存储读取数据并将其置于状态,从后端获取初始批量数据等等@MartinKadlec那么watcher sagas是由web api运行的?否则他们会阻止其他一切,对吗?Watcher只是一个能产生效果的传奇生成器。但是使用和处理这些效果的saga库在内部使用webapi。webapi的一个例子是javascript中的
setTimeout
函数,您可以在将来的某个时候使用它来运行一些东西。