天天看點

SAP 電商雲 Spartacus UI ComponentDataProvider defer 工廠函數

SAP 電商雲 Spartacus UI ComponentDataProvider defer 工廠函數
SAP 電商雲 Spartacus UI ComponentDataProvider defer 工廠函數

為什麼 this.componentService.getItems 最後就觸發到

Component-data.provider.ts 工廠函數的執行了?

SAP 電商雲 Spartacus UI ComponentDataProvider defer 工廠函數

29行的 getService:

SAP 電商雲 Spartacus UI ComponentDataProvider defer 工廠函數
SAP 電商雲 Spartacus UI ComponentDataProvider defer 工廠函數

getService 的實作在第 70 行,又會調用到第 79 行的 getContext:

SAP 電商雲 Spartacus UI ComponentDataProvider defer 工廠函數

這裡的 componentData,就和之前這篇文章如何在 SAP 電商雲 Spartacus UI 裡通路 CMS Component data 資料介紹的内容串聯起來了。

輸入參數:

SAP 電商雲 Spartacus UI ComponentDataProvider defer 工廠函數

首先明确,為什麼 defer 裡的工廠函數會被執行?一定是因為 defer 傳回的 Observable 在某處被 subscribe 了。

getItems -> getService -> getContext -> this.componentData.data$

因為 getItems 被 async pipe 執行,是以 this.componentData.data$ 被 subscribe.

更多Jerry的原創文章,盡在:“汪子熙”: