我正在搜索满足给定条件的文档。在这里,我通过订阅两个不同的请求来搜索存储在两个不同变量中的surveys
和exams
。
getEntities() {
this.submissionsService.getSubmissions(findDocuments({
'user.name': this.userService.get().name,
type: 'survey',
status: 'pending'
})).subscribe((surveys) => {
this.surveys = surveys;
});
this.submissionsService.getSubmissions(findDocuments({
'user.name': this.userService.get().name,
type: 'exam',
status: 'pending'
})).subscribe((exams) => {
this.exams = exams;
});
}
如何在一个服务请求中保存两个可观察对象,而不是分别发出两个请求?
谢谢!
答案 0 :(得分:2)
您可以在rxjs中使用forkjoin
。
forkjoin :当您有一组可观察对象并且仅关心每个对象的最终发射值时,最好使用此运算符。一个常见的用例是,如果您希望在页面加载(或其他事件)时发出多个请求,并且只希望在收到所有人的响应后才采取措施。
getEntites() {
const surveysObservable = this.submissionsService.getSubmissions(findDocuments({
'user.name': this.userService.get().name,
type: 'survey',
status: 'pending'
}));
const examsObservable = this.submissionsService.getSubmissions(findDocuments({
'user.name': this.userService.get().name,
type: 'exam',
status: 'pending'
}));
Observable.forkJoin([surveysObservable , examsObservable]).subscribe(results => {
this.surveys = results[0];
this.exams = results[1];
});
}
检出此有效的stackblitz。了解有关forkjoin here.
的更多信息