天天看點

SAP Spartacus AuthService.getUserToken的實作

SAP Spartacus AuthService.getUserToken的實作
SAP Spartacus AuthService.getUserToken的實作

所有資料結構都在this.store.source._value裡:

SAP Spartacus AuthService.getUserToken的實作

return一個();裡面包了一個函數:

SAP Spartacus AuthService.getUserToken的實作

getUserToken是一個memoized函數,傳入select,傳回一個selectorOperator,再傳入pipe:

SAP Spartacus AuthService.getUserToken的實作

SAP Spartacus AuthService.getUserToken的實作

pipeFromArray, 如果輸入參數隻有一個元素,則直接傳回它。

SAP Spartacus AuthService.getUserToken的實作
SAP Spartacus AuthService.getUserToken的實作

source$指向store,從source裡執行map操作,map的邏輯就是pathOrMapFn:

SAP Spartacus AuthService.getUserToken的實作
SAP Spartacus AuthService.getUserToken的實作

MapOperator内部,_next的執行邏輯,就是針對輸入的value, 調用project函數:

SAP Spartacus AuthService.getUserToken的實作

next:調用pathOrMapFn:

SAP Spartacus AuthService.getUserToken的實作
SAP Spartacus AuthService.getUserToken的實作

建立名為siteContext的Feature Selector:

SAP Spartacus AuthService.getUserToken的實作

createFeatureSelector:

SAP Spartacus AuthService.getUserToken的實作

args此刻就為siteContext state的内容:

SAP Spartacus AuthService.getUserToken的實作

整段代碼的語義:執行map和箭頭函數fn,結果賦給args, 再執行memoizedProjector.memoized函數,此時args就是輸入參數。

SAP Spartacus AuthService.getUserToken的實作
SAP Spartacus AuthService.getUserToken的實作
SAP Spartacus AuthService.getUserToken的實作

繼續閱讀