【发布时间】:2019-02-17 05:27:40
【问题描述】:
我有一个案例,我可能需要也可能不需要将 observables 添加到列表中。然后我想forkJoin 我拥有的可观察对象,以便在所有数据可用后加载页面。
let observables: Observable<any>[] = [];
observables.push(this.taskService.getStep(this.housingTransactionId, this.task.stageReferenceId, this.task.stepReferenceId));
if (this.task.associatedChatThreadId) {
observables.push(this.messageHubService.getChatThread(this.housingTransactionId, this.task.associatedChatThreadId));
}
if (this.task.associatedDocuments && this.task.associatedDocuments.length > 0) {
this.task.associatedDocuments.forEach(documentId => {
observables.push(this.documentHubService.getDocumentProperties(this.housingTransactionId, documentId));
});
}
Observable.forkJoin(observables)
.subscribe(([step, chatThread, ...documents]) => {
this.step = step;
this.chatThread = chatThread;
this.documents = documents;
this.isPageLoading = false;
}, error => {
this.isPageLoading = false;
console.log(error);
});
我遇到的问题是,如果我没有this.task.associatedChatThreadId,那么 observable 就不会添加到列表中,并且当执行 forkJoin 时,...documents 位于subscribe 方法中的chatThread 属性(嗯,第一个文档!)。
有没有办法确保来自forkJoin 的响应的定位?或者我应该/我可以使用不同的方法吗?
【问题讨论】:
标签: javascript angular typescript rxjs observable