代码之家  ›  专栏  ›  技术社区  ›  Fallenreaper

尝试将http请求链接在一起,并将最终输出作为可观察结果返回

  •  0
  • Fallenreaper  · 技术社区  · 4 年前

    在使用Typescript时,我遇到了一些问题,无法将可观察对象链接在一起,这样才有意义。在这个例子中,我写了一个条件,它取决于它的值,或者执行一个函数,或者在执行函数之前做一些预处理。

    在执行此操作时,我注意到问题区域正在尝试返回 Observable<Observable<number>>

    b(data: number): Observable<number> { return of(data); }  // This is a stub.
    a(data: number): Observable<number> {
    
      const fn = (x): Observable<number> => {
        return of(x)  // this is a stub which would be the result of an http request.
      }
    
      if(data < 3) {
        return fn(data);
      } else {
        return b(data).pipe(map( x => fn(x) )) // Problem line
      }
    }
    

    该如何处理?我想可能有一种方法可以使用承诺来处理这个问题,但我认为这会弄乱函数签名,因为我需要将它们标记为异步。我被难倒了,希望得到一些指导。

    0 回复  |  直到 4 年前
        1
  •  1
  •   Daniel Gimenez    4 年前

    开关图 海图 合并地图

    return b(data).pipe(switchMap(x => fn(x)))
    

    b(data: number): Observable<number> { return of(data); }  // This is a stub.
    a(data: number): Observable<number> {
      const src$ = data < 3 ? of(data) : b(data);
      return src$.pipe(switchMap(x => of(x) /* your stub function */));
    );
    
    推荐文章