源代码:

ngOnInit(): void {console.log('before ngOnInit');const source$ = range(0, 10);source$.pipe(/*filter((x, index) => {console.log('inside filter!: ' + x + ' index: ' + index);return x % 2 === 0 })*/ /*map( x => { console.log('inside map: ' + x);return (x + x); }),*/// scan((acc, x) => acc + x, 0)scan(this.accumulator)).subscribe(x => console.log('result: ' + x));}

入口:

由此可见,scan的第二个参数可以用来传入seed:

scan执行完之后,返回到pipe函数执行中,pipeFromArray(operations)(this)会执行scan函数返回的新函数,

即:scanOperatorFunction

创建新的scanOperator:

scan.js内部会创建一个新的Observable,将原始的Observable维护在source字段里:

然后执行应用代码中的subscribe:

此处执行operator,即scan操作:


首先调用range.js里的next方法,逐一生成间隔:

这里再次看到了const source$ = range(0, 10)语句的惰性生成值效果:在range方法返回的Observable对象没有调用subscribe方法之前,根本不会有任何整型值生成的行为发生。

从range.next调用执行到scan的accumulator方法体内:

此处进入了我们应用程序实现的accumulator方法:

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

rxjs里scan operator的执行研究相关推荐

  1. Angular rxjs里自定义operator的使用

    操作符是函数,它基于当前的 Observable 创建一个新的 Observable.这是一个无副作用的操作:前面的 Observable 保持不变. 操作符本质上是一个纯函数 (pure funct ...

  2. rxjs里scan operators的用法

    Applies an accumulator function over the source Observable, and returns each intermediate result, wi ...

  3. rxjs里的Observable对象和map配合的一个用法

    源代码: import { of } from 'rxjs'; import { Injectable } from '@angular/core'; import { map } from 'rxj ...

  4. rxjs里switchMap operators的用法

    switchMap相关文章 rxjs里switchMap operators的用法 通过rxjs的一个例子, 来学习SwitchMap的使用方法 rxjs switchMap的实现原理 rxjs的ma ...

  5. iOS Extension 里的方法不执行

    iOS Extension 里的方法不执行 确保Extension与主程序同在一个Target内. 主程序Build Phases->Embed App Extensions中导入对应Exten ...

  6. 商汤再挖MSRA大将:R-FCN作者代季峰加盟任执行研究总监

    郭一璞 发自 MSRA旁边 量子位 报道 | 公众号 QbitAI 代季峰,R-FCN物体检测算法和Deformable ConvNets的作者,已经离开了微软亚洲研究院(MSRA),加入商汤. 他本 ...

  7. 在Safari里也能像Chrome里一样,通过执行js修改变量的值,在debugger里立即生效

    在Safari里也能像Chrome里一样,通过执行js修改变量的值,在debugger里立即生效. 和Chrome里的network tab一样,Safari里通过network request一样能 ...

  8. php访问js文件不存在,php文件里js不能被执行

    我想把上传文件路径返回到前端保存,但是后台php文件里的js没有执行,前台input标签里的value值一直为空 后台acceptfile.php代码如下:<?php if(!isset($_R ...

  9. linux查看db2存储过程,DB2查看存储过程里SQL语句的执行情况

    动态SQL可以用snapshot查看,存储过程里SQL语句的执行情况用event monitor查看. 但是event monitor没有记录SQL语句,而是记录了package id和Section ...

最新文章

  1. mysql5.6.37驱动_mysql 5.6.37(zip)下载安装配置图文教程
  2. Apache POI和EasyExcel 第六集:Apache POI的Excel读取单元格中的计算公式
  3. 深究Java中的RMI底层原理
  4. 两数相加c++_LeetCode 热题 HOT 100(01,两数相加)
  5. 《算法竞赛进阶指南》 0x30 数学知识 数论 题目
  6. input中checked复选框进行单选
  7. CeBIT 2017热点:从5G到AI和物联网
  8. 我从构建生产型数据库中学到的42件事
  9. 实践SaltStack安装和配置管理
  10. jQuery插件管理方案
  11. Word2013 设置默认缩进
  12. Android Layout 布局属性全解
  13. OKR组织敏捷目标和绩效管理第二课 O、KR和案例讲解
  14. oracle 还原imp,Oracle学习笔记——imp还原数据库
  15. Apriori算法通俗讲解
  16. 计算机驱动空间的c盘不足怎么办,如果C驱动器空间不足,该怎么办
  17. antdownload百度网盘下载器、下载不限速
  18. 分享我成为GDE(Google开发者专家)的经历
  19. ffmpeg的中文文档
  20. Java精品文章收藏(百度文库)

热门文章

  1. Java设计模式(六)----适配器模式
  2. 用栈来求解汉诺塔变形问题
  3. [Domino]Java访问Domino必需配置的服务器设置
  4. Rabbitmq集群高可用部署详细
  5. Docker(五)如何构建Dockerfile
  6. qt5.10 for android 使用webview时qml 与html 中js的相互访问
  7. 【CTR模型】TensorFlow2.0 的 DeepFM 实现与实战(附代码+数据)
  8. PyTorch基础(part3)
  9. 文献学习(part83)--An Embedding Approach to Anomaly Detection
  10. JupyterNotebook随记(part1)--打开默认目录