rxjs里tap操作符的使用单步调试

261 阅读1分钟

按照CSDN里的方法,使用JavaScript将China country code手动添加到下拉列表里,

经过测试,这种方法已经失效了,我手机一直收不到Github发送的验证码:

虽然发送验证码的请求已经成功发送给Github后台,估计后台做了基于国家的限制:

测试代码:

const a = of([1, 2, 3]);
    const mapFn = (data: number[]) => {
      for( let i = 0; i < data.length; i++){
        data[i] = data[i] + 1;
      }
      console.log('data: ' + data);
      return data;
    };
    const b = a.pipe(map(mapFn));
    
    const myGet = (data) => console.log('got: ' + data);

    const tt = tap(myGet);
    a.pipe(tt).subscribe();

nextOrObserver就是myGet:

然后执行a.pipe(tt). pipeFromArray:

this就是调用pipe的source Observable,作为输入参数source,传入tap返回的tapOperationFunction里:

return source.lift(new DoOperator(nextOrObserver, error, complete)); 返回一个新的Observable:

DoOperator的实现比MapOperator更简单,因为不含project,只是简单的执行app 传入tap的fn:


最后基于pipe返回的Observable调用subscribe:


调用DoOperator的call方法:注意此时的source参数,包含的是调用pipe之前的原始Observable:


原始Observable调用subscriber的next方法,后者会调用_tapNext:

因为subscriber变量的类型是Tapsubscriber:


更多Jerry的原创文章,尽在:“汪子熙”: