测试代码:
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的原创文章,尽在:"汪子熙":














网友评论