rxjs的pipe和map配合使用的单步调试
2023-09-14 09:04:03 时间
测试代码:
const a = of([1, 2, 3]);
const b = map((data: number[]) => {
for( let i = 0; i < data.length; i++){
data[i] = data[i] + 1;
}
console.log('data: ' + data);
return data;
} );
const c = a.pipe(b);
c.subscribe((data) => console.log('Fairy:' + data));
of返回的原始Observable调用subscribe方法,里面会调用subscriber的next方法,输入为[1,2,3]:
subscriber的next和_next区别就是前者多了一个isStopped的判断:
注意:因为现在我们调用Observable.subscribe方法,传入的不是一般的subscriber,而是Mapsubscriber,后者是app callback一个包含了map逻辑及project的封装体:
所以,在Mapsubscriber内部,_next的实现就是将传入的value用project去调用:
map project执行的result还得继续往下执行:
这里还有index参数我没有使用:
调用this.destination.next将执行链继续下去:
第四层嵌套结构里就是app callback:
app callback在这里被调用:
更多Jerry的原创文章,尽在:“汪子熙”:
相关文章
- 下厨房---map/字符串查询
- [Go] Map
- [Typescript] Map an Object to a Union of Tuples
- [D3JS] Add more map layer and color
- [ES6] 18. Map
- 一个使用Java Map.computeIfAbsents实现非波拉契(fibonacci)数列的列子
- Atitit 调试工具模块 保存序列化map参数 mybatis调试sql selectid 查看mybatis真实sql 1.1. 对象序列化功能 序列化为bytearr 文件等1 1.2.
- rxjs pipe和map组合的一个实际例子的单步调试
- Map集合之TreeMap
- Dozer对象映射框架Map到JSONString映射问题排查
- es6 语法 (map、set和obj 的对比)
- python四个带 key 参数的函数(max、min、map、filter)
- leaflet获取map当前状态(中心点,zoom值,角度边界值,容器宽高,像素边界值)
- 由浅入深聊聊Golang的sync.Map
- Kotlin List、Set和Map