当前位置: 首页 > Web前端 > HTML5

在Spartacus使用Command设计模式后重用以前的连接器实现

时间:2023-04-05 00:59:44 HTML5

Command设计模式提供了一种强大而简化的方式来处理状态(换句话说,加载和缓存),并针对后端系统执行操作,例如SpartacusSetthePaymentStorefrontB2B场景下的方法,即切换下图所示的Radio按钮,相应的后台实现触发一个HTTPPUTOCC请求,通过Command方法发送到CommerceCloud后台。命令表示可以更改系统状态的操作,通常是通过对后端进行REST调用。想一想上图中Spartacus的例子,如何找到Command对应的OCC请求的准确发起位置呢?是否涉及任何连接器?将鼠标移动到网络选项卡的启动器列,可以查看函数调用列表。乍一看,在SpartacusB2BStorefront发起的OCCAPI请求中,我们并没有看到connector的参与?checkoutPaymentTypeFacade定义在checkout/b2b的根文件夹下:core文件夹下的service实现了这个facade:通过存储CommandService.create工厂方法调用的结果,可以将command实例定义为类的一个属性。在创建命令的工厂函数中,它有以下参数:(1)一个调度命令的函数(通常是调用连接器)(2)一个选项对象(通常用于指定策略)当上面的命令执行时创建完成后,函数第60行传入的schedule是paymentTypeConnector的connector调用:connector调用adapter:adapter调用HTTP客户端的标准put方法:factory函数的第二个参数是Command的Strategy,并且有以下四个选项:Parallel并行执行所有命令。Queue将命令排队并顺序执行,这是默认策略。CancelPrevious开始执行新的命令并取消上一个命令(如果尚未完成)。这时候,之前执行的结果流就完成了,还没有下发。可以类比RxJs的SwitchMapOperator.ErrorPrevious来开始新的命令执行。如果之前的命令还没有完成,就会抛出错误(之前执行的结果流会抛出错误)。