SAP Spartacus 中的 Commands and queries

JerryWang_汪子熙 -
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 });
  }
特别申明:本文内容来源网络,版权归原作者所有,如有侵权请立即与我们联系(cy198701067573@163.com),我们将及时处理。

Tags 标签

sapjavascript前端htmlhtml5

扩展阅读

加个好友,技术交流

1628738909466805.jpg