源代码:

  getNextPageContext(): Observable<PageContext> {const a = this.store.pipe(select(RoutingSelector.getNextPageContext));console.log('Jerry next page context: ' + a);a.subscribe((b) =>{console.log(b);});return a;}

单步调试:

a是调用类似ABAP open SQL从ngrx store里select出来的一个store 引用:

把store对象的operator字段取出来,存放到变量operator里。

等价于:const operator = this.operator;

上图第21行的变量ObserverOrNext, 即我们指定到subscribe调用里的回调函数。

在toSubscriber.js文件里,把我们传入到subscribe里的回调函数,封装成一个Subscriber实例。

Subscriber的destination字段,存储的是SafeSubscriber实例,指向我们指定的回调函数。

_next存放的就是回调函数:

operator:

this和this.source的类型都是Store.

下面这行代码相当于告诉this.store, 让其通知subscriber了:

DistinctUntilChangedSubscriber这个subscriber,就是普通的subscriber基础上,包裹一层DistinctUntilChanged:
现在又要为DistinctUntilChangedSubscriber创建一个subscriber了:

这里终于调用store的_subscribe方法了:

在ReplaySubject.js里,手动调用subscriber的next方法:

而next的输入参数,这个_events数组里有全局的action数据:

@ngrx/store/update-reducers里能看到所有的features:

这里能看出,输入是上面介绍的一大串复杂的state和action结构,输出就是homepage和content page的Pagecontext了。

而上图29行的this.project, 应该是我们应用程序传入的一个函数。

864行,一会再设置断点:

执行到53行时,再切换到ngrx-store.js里,设置断点:

注意断点的位置需设置准确:

没有成功,再试试map.js的第29行:

cmsRequired

这里是RouterState的初始状态:

page.effect.ts:

更多Jerry的原创文章,尽在:“汪子熙”:

从ngrx store里selector出来的Observable,执行subscribe的单步调试相关推荐

  1. Angular Ngrx store 里的 Selector 介绍

    选择器是纯函数,它将状态切片(State slice)作为输入参数,并返回组件可以使用的状态数据切片(这些切片包含真正的业务数据). 正如数据库有自己的 SQL 查询语言一样,Ngrx/store 模 ...

  2. NgRx Store里的StoreModule.forRoot()

    NgRx Store is mainly for managing global state across an entire application. In cases where you need ...

  3. Angular里interpolation text节点的创建逻辑,单步调试

    通过一个例子来学习: 新建一个Component,只包含一个名为hero的属性,包含一个name字段,值为Jerry: export class AppComponent implements OnI ...

  4. NgRx Store createSelector 返回的 selector 执行取数逻辑的单步调试

    测试源代码: import { Component } from '@angular/core'; import { createSelector } from '@ngrx/store';expor ...

  5. NgRx store.dispatch方法的单步调试

    this.store.dispatch方法执行之后,会触发哪些操作呢? _value里维护的store的初始值: store里有三个字段: actionsObserver reducerManager ...

  6. NgRx Store createSelector 的单步调试和源代码分析

    源代码: import { Component } from '@angular/core'; import { createSelector } from '@ngrx/store';export ...

  7. 关于 @ngrx/Store 下 obj 的扩展问题

    为什么80%的码农都做不了架构师?>>>    昨天做 task 的时候,遇到了一个问题. TypeError: can't define property "x" ...

  8. rxjs里的Observable对象subscribe方法的执行原理

    看个例子: const myObservable = of(1, 2, 3);// 创建一个观察者对象-Observer(处理next.error.complete回调)const myObserve ...

  9. vue3 实现监听store里state状态变化

    vue3 实现监听store里state状态变化 import { watch } from "vue"; watch(() => store.state.currentDe ...

最新文章

  1. 新浪云python示例_在新浪云上部署Django应用程序
  2. 南方电网两栖机器人_探访国内最大5G智能电网应用区:5G机器人已替代人工巡检...
  3. python中split()进行多分割
  4. 实录 | 平安人寿资深算法工程师张智:人机交互场景下的知识挖掘
  5. SAP Spartacus里的localStorage用法
  6. C++/C--删除string末尾字符的方法【转载】
  7. 【计算机组成原理笔记】计算机的基本组成
  8. 定位CPU异常抖动---tomcat热部署的坑[转载]
  9. [渝粤教育] 西南科技大学 运输组织学 在线考试复习资料
  10. The process cannot access the file '' because it is being used by another process.....
  11. 兰花草c语言编码蜂鸣器,蜂鸣器奏乐-多种音乐分享
  12. 计算机应用技术辅助设计方向课程,AutoCAD计算机辅助设计课程标准.doc
  13. 如何采用类比法和类推法估算软件项目工作量
  14. 2018 qs计算机排名,2018年QS世界大学学科排名公布 强势围观
  15. css span img,css设置span和img垂直居中(设置line-height失效)
  16. 分享一个空手反套白狼的骚操作
  17. 【考研英语语法】名词性从句
  18. H5唤起web地图导航
  19. 微信小程序在苹果上出现[request:fail 发生了 SSL 错误无法建立与该服务器的安全连接。]错误的解决方案
  20. Office:你的 OneDrive 帐户存在问题?

热门文章

  1. 谈及未来的 AI, 也许你已身处其中 —— 记 InfoQ 对青云QingCloud 联合创始人林源的采访...
  2. 记录Hibernate的缓存知识
  3. SQL Server 2005 在只有MDF文件的情况下恢复(丢失日志文件)
  4. 解决m2eclipse需要jdk的错误
  5. Ospf在广播网络中建立邻居关系的详细过程
  6. .NET MasterPage技术
  7. DDR3布线的那些事儿(二)
  8. ADO.NET学习笔记--数据汇总(聚合函数)
  9. 给asp.net mvc小白扫盲用的
  10. 通过ByteBuffer来操作byte