【发布时间】:2017-09-24 16:44:58
【问题描述】:
我正在尝试从数据库中检索狗的列表。我想以Observable<Dog[]> 检索狗列表。但是,当我调用 toArray() 或使用任何其他方法尝试将传入流转换为数组时,我在调用 retrieveDogs(dogsId) 方法时不会收到任何数据。如何检索Observable array 而不仅仅是Observable stream?
retrieveDogs(dogIds : Array<string>): Observable<Dog[]>{
return Observable.from(dogIds)
.map(dogId => this.retrieveDog(dogId))
.flatMap(dogObservable => dogObservable)
.toArray();
}
retrieveDog(dogId : string) : Observable<DogEntity> {
//afDB -> AngularFireDatabase that returns an observable with the data from the firebase database
return this.afDB.object(DB_DOGS + DB_DASH + dogId)
.map(dogObject =>DogEntity.convertObject(dogId,dogObject)
}
【问题讨论】:
-
短篇小说,你不知道,可观察对象是事件流。您可以使用 toArray 将 src observable 中的所有数据缓冲到一个数组中。 github.com/Reactive-Extensions/RxJS/blob/master/doc/api/core/…是你想要的吗?
-
我明白你关于流的意思。我注意到 toArray() 需要某种形式的 complete() 方法才能被触发,以便它封装数组并返回 observable。不幸的是,AngularFire 方法不会触发任何完整的方法,因此 toArray() 只是等待,因此没有返回任何内容。
标签: javascript angular reactjs typescript observable