rxjs里scan operator的执行研究
源代码:
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的执行研究相关推荐
- Angular rxjs里自定义operator的使用
操作符是函数,它基于当前的 Observable 创建一个新的 Observable.这是一个无副作用的操作:前面的 Observable 保持不变. 操作符本质上是一个纯函数 (pure funct ...
- rxjs里scan operators的用法
Applies an accumulator function over the source Observable, and returns each intermediate result, wi ...
- rxjs里的Observable对象和map配合的一个用法
源代码: import { of } from 'rxjs'; import { Injectable } from '@angular/core'; import { map } from 'rxj ...
- rxjs里switchMap operators的用法
switchMap相关文章 rxjs里switchMap operators的用法 通过rxjs的一个例子, 来学习SwitchMap的使用方法 rxjs switchMap的实现原理 rxjs的ma ...
- iOS Extension 里的方法不执行
iOS Extension 里的方法不执行 确保Extension与主程序同在一个Target内. 主程序Build Phases->Embed App Extensions中导入对应Exten ...
- 商汤再挖MSRA大将:R-FCN作者代季峰加盟任执行研究总监
郭一璞 发自 MSRA旁边 量子位 报道 | 公众号 QbitAI 代季峰,R-FCN物体检测算法和Deformable ConvNets的作者,已经离开了微软亚洲研究院(MSRA),加入商汤. 他本 ...
- 在Safari里也能像Chrome里一样,通过执行js修改变量的值,在debugger里立即生效
在Safari里也能像Chrome里一样,通过执行js修改变量的值,在debugger里立即生效. 和Chrome里的network tab一样,Safari里通过network request一样能 ...
- php访问js文件不存在,php文件里js不能被执行
我想把上传文件路径返回到前端保存,但是后台php文件里的js没有执行,前台input标签里的value值一直为空 后台acceptfile.php代码如下:<?php if(!isset($_R ...
- linux查看db2存储过程,DB2查看存储过程里SQL语句的执行情况
动态SQL可以用snapshot查看,存储过程里SQL语句的执行情况用event monitor查看. 但是event monitor没有记录SQL语句,而是记录了package id和Section ...
最新文章
- mysql5.6.37驱动_mysql 5.6.37(zip)下载安装配置图文教程
- Apache POI和EasyExcel 第六集:Apache POI的Excel读取单元格中的计算公式
- 深究Java中的RMI底层原理
- 两数相加c++_LeetCode 热题 HOT 100(01,两数相加)
- 《算法竞赛进阶指南》 0x30 数学知识 数论 题目
- input中checked复选框进行单选
- CeBIT 2017热点:从5G到AI和物联网
- 我从构建生产型数据库中学到的42件事
- 实践SaltStack安装和配置管理
- jQuery插件管理方案
- Word2013 设置默认缩进
- Android Layout 布局属性全解
- OKR组织敏捷目标和绩效管理第二课 O、KR和案例讲解
- oracle 还原imp,Oracle学习笔记——imp还原数据库
- Apriori算法通俗讲解
- 计算机驱动空间的c盘不足怎么办,如果C驱动器空间不足,该怎么办
- antdownload百度网盘下载器、下载不限速
- 分享我成为GDE(Google开发者专家)的经历
- ffmpeg的中文文档
- Java精品文章收藏(百度文库)
热门文章
- Java设计模式(六)----适配器模式
- 用栈来求解汉诺塔变形问题
- [Domino]Java访问Domino必需配置的服务器设置
- Rabbitmq集群高可用部署详细
- Docker(五)如何构建Dockerfile
- qt5.10 for android 使用webview时qml 与html 中js的相互访问
- 【CTR模型】TensorFlow2.0 的 DeepFM 实现与实战(附代码+数据)
- PyTorch基础(part3)
- 文献学习(part83)--An Embedding Approach to Anomaly Detection
- JupyterNotebook随记(part1)--打开默认目录