【问题标题】:Returning an observable from another observable's .subscribe function从另一个 observable 的 .subscribe 函数返回一个 observable
【发布时间】:2020-10-10 13:20:36
【问题描述】:

我在使用 Typescript 的 Angular 中有一个可观察到的小问题。下面的代码不起作用,更多的是为了理解我想要做什么。

getRefuels(): Observable<Refuel[]> {
    return new Observable<Refuel[]>((obs) => {
        this.hashService.getHashedUserEmail().subscribe((hashValue) => {

            //This is the observable I want to return
            return this.firestore
                .collection<Refuel>(`users/${hashValue}/refuels`, ref => ref.orderBy('date', 'desc'))
                .valueChanges({idField: 'id'});

        });
    });
}

我尝试添加.pipe(map(res =&gt; { return res; })),但它并没有达到我想要的效果。 我也尝试过以下代码,但数据类型不适合:

obs.next(this.firestore
  .collection<Refuel>(`users/${hashValue}/refuels`, ref => ref.orderBy('date', 'desc'))
  .valueChanges({idField: 'id'}));

obs.complete();

当我订阅我的 Firestore observable 然后将结果列表放入 obs.next() 时,它起作用了,但这样我就不再获得列表更新了。

你知道我该如何解决这个问题吗?

【问题讨论】:

    标签: angular typescript google-cloud-firestore observable subscribe


    【解决方案1】:

    当你有 2 个 observables 时,你可以使用 switchMap 操作符

    first_observable.pipe(
      switchMap(result => {
       // do something with the result
       return second_observable;
       })
    ).subscribe(second_result => {
       // do something with result of second observable
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 2021-02-05
      • 2021-07-26
      • 2021-11-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多