我正在尝试创建一个可观察的流,它将监听我的firebase数据库并且还会改变位置。这是我正在使用的。
在我的服务中,我创建了一个我更改位置的主题:
private location: Subject<{ lat: number, lng: number }> = new Subject();
然后我有一个函数返回这些组合的observable:
getBusinessData() {
return Observable.combineLatest(this.db.list(`${this.root}`), this.location, (x, y) => ({ x, y })).map(data => {
return data.x;
});
}
如图所示,我结合检测数据库中的更改以及更改位置时。从加载一页开始我调用此函数
this.b = this.provider.getBusinessData()
this.provider.changeLocation({ lat: 41.059481, lng: -82.023820 });
<ion-item *ngFor="let business of b | async" >
<h1> {{business.name}}</h1>
</ion-item>
要更改位置,我在我的提供商中调用此功能
changeLocation(newLocation: { lat: number, lng: number }) {
this.location.next(newLocation)
}
我希望将这些结合起来,因为如果我更改位置,我希望我的订阅再次发出值,从而根据新位置映射数据库中的数据。我的问题是,如果有人知道如何实现这一目标。可能我需要为我的位置设置一个默认值,这样组合的observable将在第一次订阅时发出该值。也许我需要做一些完全不同的事情。如果有人有任何想法,我一直试图让这个工作没有运气,这将是一个巨大的帮助。谢谢!