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

forkJoin与Observable<void>

  •  0
  • Sydney  · 技术社区  · 8 年前

    我有一个可观察的。如果成功,我想给用户反馈,然后刷新页面上的数据。所以我所做的就是 do 操作员获取用户反馈,然后致电 forkJoin 刷新数据。问题是不可能调用 分叉连接 a之后 做 出现以下错误: Error:(37, 12) TS2339: Property 'forkJoin' does not exist on type 'Observable<void>'.

    代码:

    this.pickService.activate(event)
      .do(() => this.snackBar.open(`Pick activated`, null, {duration: 5000}))
      .forkJoin([
        this.pickService.get('DRAFT', 'dt,asc'),
        this.pickService.get('PENDING', 'dt,desc')
      ])
      .subscribe(results => {
        this.draftPicks = results[0];
        this.pendingPicks = results[1];
      });
    

    可观察的

      activate(id: string): Observable<void> {
        return this.http.patch<void>(`/api/v1/picks/${id}`, {status: 'PENDING'});
      }
    
    2 回复  |  直到 8 年前
        1
  •  2
  •   OJ Kwon    8 年前

    forkJoin 是静态创建方法,不是操作符可以链接的。所以你可以 Observable.forkJoin 只有

        2
  •  1
  •   Bene    8 年前

    forkJoin只是一种可观察的创建方法。所以我认为你想要做的是这样的:

    let requests = [ this.pickService.get('DRAFT', 'dt,asc'),
                     this.pickService.get('PENDING', 'dt,desc') ];
    
    this.pickService.activate(event)
                    .do(() => this.snackBar.open(`Pick activated`, null, {duration: 5000}))
                    .switchMap(a => Observable.forkJoin(requests))
                    .subscribe(...)