天天看点

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的实现

继续阅读