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

如何订阅flatMap的结果?

  •  0
  • POV  · 技术社区  · 7 年前

    如何订阅flatMap的结果?

       timer(0, 2000)
          .pipe(
            flatMap(() => this.scannerService.scan(this.scanType)),
            takeWhile(res => res.errorDesc !== "SUCCESS")
          )
          .subscribe((res: IScanResponse) => {
    });
    

    我试着用 .subscribe() 之后 pipe .但我得到的错误是:

    您提供了一个无效的对象,其中应该有一个流。你可以 提供一个可观察的、承诺的、阵列的或可测量的。

    我的遥控功能是:

    public scan(scanType: string): Observable<any> {}
    

    我的进口商品是:

    import { timer } from "rxjs";
    import { takeWhile } from "rxjs/operators";
    import { ScannerService } from "src/app/api/ScannerService";
    import { flatMap } from "rxjs/operators";
    
    1 回复  |  直到 7 年前
        1
  •  1
  •   Wandrille    7 年前

    您的问题是返回的类型 scan

    在一个 flatMap ,你需要 返回一个可观察到的 .

    你回来了 Observable<any> {} 而不仅仅是 Observable<any>

        2
  •  1
  •   Patricio Vargas    7 年前

    之后 .pipe() 自从 .管道 返回一个可观察的

    const tm = timer(0, 2000).pipe(
         flatMap(() => this.scannerService.scan(this.scanType)),
         takeWhile(res => res)
    ).subscribe(res=> {
    //your code
    });;
    
    推荐文章