乐趣区

关于sap:SAP-Spartacus-中的-Commands-and-queries

命令和查问提供了一种弱小且简化的形式来解决状态(换句话说,加载和缓存),并针对后端系统执行操作。这相似于 React Query 和 SWR 等库在单页应用程序中解决来自 API 的状态问题的形式。前端利用状态很大一部分来自后端。常常用于状态治理的 Redux 架构在创立时并未思考到这种类型的状态,并且须要大量样板来反对它。不同类型的状态须要不同的解决方案,并且命令和查问旨在解决来自 Spartacus 中的 API 的状态。在很多状况下,命令和查问将取代默认 Spartacus 库的 NgRx,并使大多数实现更简略,具备更好、更统一的错误处理,同时还利用 Spartacus 事件框架。

什么是 command

命令示意能够更改零碎状态的操作,通常通过向后端收回 REST 调用。命令能够返回后果,并且能够在思考执行策略的同时执行。每个命令执行都会返回一个 observable,它会收回(带有可选的胜利后果),而后在命令实现时实现,或者在命令执行导致谬误时抛出谬误。

订阅后果 observable 并不能确定命令的执行,因而它是可选的。、

command definition

通过存储 CommandService.create 工厂办法调用的后果,能够将命令定义为类的属性。

命令具备以下参数:

  • 调度命令的函数(通常是对连接器的调用)
  • 一个选项对象(通常用于指定策略)

上面是一个例子:

  protected updateCommand: Command<{details: User}> = this.command.create((payload) =>
      this.userIdService.takeUserId(true).pipe(switchMap((uid) =>
          this.userProfileConnector.update(uid, payload.details)
      ),
    {strategy: CommandStrategy.Queue,}
  );
  • Parallel 并行执行所有命令。
  • Queue 将命令排队并按程序执行(这是默认策略)。
  • CancelPrevious 开始新的命令执行,如果尚未实现则勾销上一次执行(上一次执行的后果流将在不发射的状况下实现)。
  • ErrorPrevious 开始新的命令执行,如果尚未实现,则为上一个命令引发谬误(上一次执行的后果流将引发谬误)。

Exposing Commands in Facade Services

命令旨在公开为调用能够在命令类上执行的办法,并返回可察看的后果。如前所述,调用能够简略地调用一个办法来执行命令。订阅后果是可选的。上面是一个例子:

  update(details: User): Observable<unknown> {return this.updateCommand.execute({ details});
  }
退出移动版