[英]Multiple Observable subscription
我需要多次訂閱才能從NoSQL數據庫中獲取正確的數據。 為了獲取特定項目的用戶列表,我這樣做:
ngOnInit() {
//Subscription 1 (Service): Get project data
this.projectService.getCurrentproject().take(1).subscribe(projectData => {
console.log('Got project data.');
//Subscription 2: Get project user IDS
this.af.database.list('/project_roles/'+projectData.$key)
.subscribe((userMeta) => {
});
});
}
正如您所看到的,訂閱中的訂閱,訂閱中的訂閱..並且每個訂閱取決於之前的訂閱。
訂閱3和4可以是並行的。
代碼運行良好,但是我錯過了一些東西,或者這就是我認為使用多個訂閱時,前一個的結果取決於下一個?
更新 :訂閱#2似乎有問題。 訂閱尚未完成,但我開始迭代列表,這給了我一個雙用戶列表!
試試這個。
ngOnInit() {
this.projectService.getCurrentproject().take(1)
.flatMap(projectData => {
return this.af.database.list('/project_roles/'+projectData.$key)
})
.flatMap(userMeta => {
let subs = userMeta.map(projectRole => {
return Observable.zip([
this.af.database.object('/roles/'+projectRole.$value),
this.af.database.object('/users/'+projectRole.$key)
]).map(([roleData, user]) => {
user.role = roleData.$value;
return Observable.of(user)
})
});
return Observable.zip(subs)
})
.subscribe(users => {
this.users = users
})
}
基本上我正在編寫訂閱以獲取發出users數組的單個observable
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.