无中间件的效果——管道阶段如何替代 Thunks 和 Sagas
Redux 通过中间件(如 thunks、sagas 和 observables)处理异步操作,这些中间件会在任意时刻分派动作,且无法保证顺序。这导致了复杂的分派链,其中时序和排序问题可能随之产生,正如 thunk 和 saga 示例所表明的那样。核心问题在于 Redux 缺乏内置的异步状态解析模型。SDuX Vault 通过消除中间件,将异步输入解析直接集成到其管道阶段中。Resolve 阶段将所有输入——无论是普通值、Promise、observables 还是结构化信封——规范化为可预测的格式。这确保了下游管道阶段始终接收一致的数据,不受传输或时序问题的干扰。与 Redux thunks 不同,后者会分派多个动作并可能以不可预测的方式交错执行,SDuX Vault 直接在管道内解析延迟工厂。该解析过程是串行的、确定性地排序的,并原子性地提交。SDuX Vault 的方法仅涉及一次状态合并,避免了中间可见状态。在编排方面,Redux sagas 在外部层使用生成器,而 SDuX Vault 在其策略层(Policy Layer)内采用控制器(Controllers)。控制器在计算之前声明执行策略,从而与数据转换逻辑实现清晰分离。这与通过分派动作到达 reducer 的 sagas 形成对比。SDuX Vault 通过架构约束保证确定性执行:串行化指挥队列、纯管道计算、延迟原子状态提交,以及结构上不可能重入。这些由运行时强制执行,防止了与异步操作相关的常见错误。Redux 依赖人工努力来保证顺序,而 SDuX 则固有地提供这一能力。