Ngrx(或一般的Redux)中同步执行动作序列的方法
我正在寻找一种最佳实践或推荐的方法来处理预条件操作,根据条件,在用户发起的操作可以完成副作用之前,必须调度并完成预条件操作(减少副作用) 例如,假设用户启动动作A,但在对A进行REST调用之前,会检查一个条件,并根据该条件,必须首先执行动作B和C(首先执行B的REST调用,然后执行C的REST调用)。只有在B和C rest调用完成后,才执行操作A的rest调用 一种方法是实现一个新的RESTAPI来包含所有这些逻辑。但在这种情况下,这不是一个选择,因为其余的不属于我们 另一个选项是定义动作:A、BCA、CA、C、A’(即A-prime)和D(表示完成)。顺序是:Ngrx(或一般的Redux)中同步执行动作序列的方法,redux,sequence,action,ngrx,effect,Redux,Sequence,Action,Ngrx,Effect,我正在寻找一种最佳实践或推荐的方法来处理预条件操作,根据条件,在用户发起的操作可以完成副作用之前,必须调度并完成预条件操作(减少副作用) 例如,假设用户启动动作A,但在对A进行REST调用之前,会检查一个条件,并根据该条件,必须首先执行动作B和C(首先执行B的REST调用,然后执行C的REST调用)。只有在B和C rest调用完成后,才执行操作A的rest调用 一种方法是实现一个新的RESTAPI来包含所有这些逻辑。但在这种情况下,这不是一个选择,因为其余的不属于我们 另一个选项是定义动作:A、
这似乎是一个常见的用例,因此我也想知道Ngrx是否有一些内置的同步动作序列机制,其中一个效果必须在下一个动作发出之前完成。以下是我最后做的。。。在执行用户发起的操作之前,有一个操作需要满足任何先决条件。UI组件分派先决条件操作,然后在该操作完成时观察状态更改。然后,它发送用户发起的操作,知道所有先决条件都已处理完毕 状态有一个属性,指示当前正在执行先决条件。调度“先决条件”操作时,减速机设置此属性;完成所有先决条件后,调度“先决条件完成”操作,减速机重置此属性。这是UI组件观察到的状态 有许多先决条件(三个rest调用),从零到所有三个都需要按顺序执行,具体取决于应用程序的状态。每次rest调用都会导致应用程序的状态发生较大变化。一个路由到带有新查询参数的URL。最好将这三个rest调用作为三个单独的“doit”和“done”操作来处理,以便分别减少每个操作的状态 每个“doit”操作的效果执行rest调用并分派一个“done”操作(以及包含状态有效负载的另一个操作)。每个“完成”动作的效果重新分派“先决条件”动作,其中效果重新评估条件并分派下一个“完成”动作。如果满足所有先决条件,则效果将发送“先决条件完成”操作 我喜欢这种方法,因为每个rest调用都可以单独减少状态,而不是试图进行所有三个rest调用,然后聚集巨大的状态,然后进行“大爆炸”减少。我也喜欢这种方法,因为它限制了所有UI组件的复杂性,这些组件需要确保在每个操作之前检查/执行相同的先决条件集 我对如何将每个“doit”和“done”操作绑定回“prerequisite”操作(通过一个效果)以执行下一个“doit”操作并不特别满意,因为做一些本质上非常简单的if-then-else逻辑来进行零到三个rest调用感觉有点复杂。但考虑到它避免了“大爆炸”减速器并允许一些重复使用,这似乎是一个相当公平的权衡