从另一个可观察对象的 .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
});
我在 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
});