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 });}總結
以上是生活随笔為你收集整理的SAP Spartacus 中的 Commands and queries的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 贪婪洞窟2英雄本附魔材料有哪些
- 下一篇: 解读全国GDP六强城市科研创新力:北京科