首页 > 其他分享 >关于 Spartacus ProdutList Component Service model$ 的填充逻辑

关于 Spartacus ProdutList Component Service model$ 的填充逻辑

时间:2023-07-15 10:55:11浏览次数:39  
标签:Observable Spartacus Service 订阅 对象 Component subscribe model 函数

源代码:

这段代码是 Angular 中的 RxJS 代码,主要是创建一个名为 model$ 的 Observable 对象,这个对象的生成逻辑复杂一些,主要涉及 using, subscribe, pipe, shareReplay 等函数的使用。

逐行解释如下:

  1. readonly model$: Observable<ProductSearchPage> = using(

    这一行定义了一个只读的变量 model$,它是一个 Observable<ProductSearchPage> 类型的对象。Observable 是 RxJS 中的一个核心类,表示一个懒推送的集合,它可以发出三种类型的通知:next、error、complete。ProductSearchPage 是发出的数据的类型,这个类型应该是你在应用中定义的一个类或接口。

  2. () => this.searchByRouting$.subscribe(),

    using 函数的第一个参数是一个函数,该函数返回一个 Subscription 或者 void 或者 any 的对象。在这里,我们返回的是 this.searchByRouting$.subscribe() 的结果,它是一个 Subscription 对象。this.searchByRouting$ 应该是一个 Observable 对象,subscribe 是订阅这个 Observable,当 Observable 发出数据时,会执行订阅时传入的函数。

  3. () => this.searchResults$

    using 函数的第二个参数也是一个函数,返回一个 Observable 或者 any 类型的对象。在这里,我们返回的是 this.searchResults$,它是一个 Observable 对象。

  4. ).pipe(shareReplay({ bufferSize: 1, refCount: true }));

    pipe 是用来组合操作符的。shareReplay 是一个 RxJS 的操作符,它可以让多个订阅者共享同一个 Observable 执行,而且还可以重播缓存的值。bufferSize 表示缓存的大小,这里是 1,也就是只缓存最近的 1 个值。refCount 表示是否在没有订阅者的时候自动停止执行,这里是 true,表示如果没有订阅者,Observable 就会停止执行。

总的来说,这段代码的作用就是创建了一个 Observable 对象,当有订阅者订阅它的时候,会先执行 this.searchByRouting$.subscribe(),然后返回 this.searchResults$ 这个 Observable 对象,并且缓存最近的 1 个值,当没有订阅者的时候,会停止执行。

这段代码可能是在一个 Angular 的服务或组件中,配合 Angular 的异步管道 async 使用,可以自动订阅和取消订阅 Observable,避免了手动管理订阅,可以减少内存泄漏的风险。

标签:Observable,Spartacus,Service,订阅,对象,Component,subscribe,model,函数
From: https://www.cnblogs.com/sap-jerry/p/17555779.html

相关文章

  • 什么是 SAP Spartacus 的 CMS Page Connector
    SAPSpartacus是一个开源的JavaScriptweb应用程序,它与SAPCommerceCloud的后端进行交互。这是一个基于Angular和RxJS的库,具有良好的扩展性,允许开发人员以模块化的方式创建和管理SAPCommerceCloud的用户界面。而CMSPageConnector是Spartacus提供的一种连接器,......
  • kubernetes之 认证和serviceaccount
    第十部分认证和serviceaccount前面讲的都是admin超级用户在操作k8s,Kubectl不能所有人都可以使用和访问。用户访问逻辑图,认证:第一种令牌认证token,最简单的认证,(只需要对方认证的共享密钥即可)服务器需要认可客户端的证书。授权:RBAC,基于角色的访问控制,目前用的比较多。    ......
  • Prometheus-4:服务自动发现Service Discovery
    自动发现Prometheus的服务发现的几种类型:基于文件的服务发现;基于DNS的服务发现;基于API的服务发现:Kubernetes、Consul、Azure......Prometheus为什么需要自动发现?PrometheusServer的数据抓取工作于Pull模型,因而,它必需要事先知道各Target的位置,然后才能从相应的Exporter......
  • msmpeng.exe 是 Windows Defender 的后台服务进程,也称为 Windows Defender Antimalwar
    msmpeng.exe是MicrosoftWindowsDefender的主要组件之一。WindowsDefender是Windows操作系统内置的杀毒软件和安全防护工具,用于检测和清除计算机上的潜在恶意软件、病毒和其他安全威胁。具体来说,msmpeng.exe是WindowsDefender的后台服务进程,也称为WindowsDefender......
  • Linux下chkconfig命令详解(service)
    Linux下chkconfig命令详解(service)一、释义chkconfig命令主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。二、使用语法chkconfig[--add][--del][--list][系统服务]或chkconfig[--level......
  • mvn打包时怎么把依赖库中的META_INF/services文件也打包进去?
    参考:https://blog.csdn.net/RL_LEEE/article/details/128134800META-INF/services/org.geotools.data.DataStoreFactorySpi好像有打包进来啊。。难道是:Maven按照POM依赖声明的先后顺序,只加载了第一个services文件中的内容,后面的两条都被忽略掉了,导致运行报错?......
  • 【Azure App Service】Web Job 报错 UNC paths are not supported. Defaulting to Win
    问题描述PHP的WebJob,通过artisan来配置路径启动PHP任务,相关启动脚本如下:artisan_path="d:\\home\\site\\wwwroot";cd${artisan_path}echo"\n"pwdphpartisanschedule:run但是,在运行的时候遇见报错:[07/06/202301:57:31>0f21a2:INFO]/d/home/site/wwwroo......
  • k8s集群node NotReady处理流程-->kubelet状态error,并伴有报错:kubelet.service has mor
    k8s集群nodeNotReady处理流程-->kubelet状态error//20230712集群有节点NotReadykubelet状态error,并伴有报错:kubelet.servicehasmorethanoneExecStart=setting,whichisonlyallowedforType=oneshotservices.Refusing在此记录一下解决流程解决流程问题定位:使......
  • service 无法注入bean问题
    Noqualifyingbeanoftype'com.unqd.api.weituo.service.IamCustomerService'available:expectedatleast1beanwhichqualifiesasautowirecandidate.Dependencyannotations:{@org.springframework.beans.factory.annotation.Autowired(required=true......
  • 解决docker报错Job for docker.service failed because start of the service was att
    转载自:https://blog.csdn.net/Along_168163/article/details/124118833=================== docker安装之后重新安装报错如下:Jobfordocker.servicefailedbecausestartoftheservicewasattemptedtoooften.See"systemctlstatusdocker.service"and"journa......