从另一个可观察对象的 .subscribe 函数返回一个可观察对象

Returning an observable from another observable's .subscribe function

我在 Angular 使用 Typescript 时发现了一个小问题。下面的代码没有工作,更多的是为了理解我想做什么。

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 => { 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() 时它起作用了,但是这样我就不会再获得列表更新了。

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

当你有 2 个 observable 时,你可以使用 switchMap 运算符

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