SAP Spartacus里的converter实例化逻辑

如何判断对于一个observable stream,存在一个可用的converter?

在方法hasConverters里进行:


this.converters是一个map,里面有四个Spartacus标准的converter:


因为这四个标准的normalizer都不是ProductNormalizer,因此继续搜索:

此处生成converter实例:

token:

这就是我们应用代码里提供的Normalizer:


如何实例化converter?

在hydrate方法里:


这里有个递归操作:


record.factory,这个工厂方法里,直接调用ProductNameNormalizer,也就是我应用程序里实现的Normalizer:

看这个JavaScript代码和TypeScript代码是如何一一对应的:

factory:


要获取更多Jerry的原创文章,请关注公众号"汪子熙":