rxjs里scan operator的执行研究
时间:2022-07-25
本文章向大家介绍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方法:
- AsyncTask源码解析
- 微信快速开发框架(五)-- 利用快速开发框架,快速搭建微信浏览博客园首页文章
- 对于小批量梯度下降以及如何配置批量大小的入门级介绍
- 数据结构之二叉树
- 微信快速开发框架(六)-- 微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github
- 数据结构之数组
- Android资源动态加载以及相关原理分析
- 微信快速开发框架(七)--发送客服信息,版本更新至V2.2 代码已更新至github
- 微信快速开发框架(八)-- V2.3--增加语音识别及网页获取用户信息,代码已更新至Github
- 微信公众平台快速开发框架 For Core 2.0 beta –JCSoft.WX.Core 5.2.0 beta发布
- Android系统层Watchdog机制源码分析
- 算法之插入排序
- Android Studio环境下搭建ReactNative
- Android实现两个ScrollView互相联动,同步滚动的效果
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法