Ras*_*sta 2 types rxjs firebase angular google-cloud-firestore
我正在使用 forkJoin 合并两个 firebase 请求的结果
两个请求均完成并记录在控制台中,但 forkJoin 本身的映射函数不会触发,因此不会向应用程序返回任何结果
public initGroup(groupname, username){
console.log(groupname, username)//This logs
return Observable.forkJoin([
this.getGroup(groupname, username),
this.groupMembers(username, groupname),
])
.map((data)=>{
console.log(data)//This does not log
this.group = data;
return this.group
})
}
Run Code Online (Sandbox Code Playgroud)
对于各个功能:
public getGroup(groupname, username){
return (this._af.database.object('/groups/'+groupname) as FirebaseObjectObservable<any>)
.map((group)=>{
console.log(group)//This logs
return group
})
}
public groupMembers(username, groupname){
return this.afService.getUserItems(groupname)
.map((users:UserInfo[])=>{
console.log(users)//This logs
return users
})
}
Run Code Online (Sandbox Code Playgroud)
我在组件内订阅:
let conn = this.groupService.initGroup(groupname, username)
.subscribe((data)=>{
console.log(data)//Does not log
......
})
Run Code Online (Sandbox Code Playgroud)
事实证明 forkJoin 不适用于 firebase observables,
当我更新到
public initGroup(groupname, username){
return Observable.combineLatest([
this.getGroup(groupname, username),
this.groupMembers(username, groupname)
])
.map((data)=>{
console.log(data)//This now logs
this.group = data;
return this.group
})
}
Run Code Online (Sandbox Code Playgroud)
mergeLatest 使其按预期工作
| 归档时间: |
|
| 查看次数: |
1040 次 |
| 最近记录: |