zl程序教程

您现在的位置是:首页 >  其他

当前栏目

rxjs的pipe和map配合使用的单步调试

Map调试 Rxjs 配合 pipe 单步 使用
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的原创文章,尽在:“汪子熙”: