У меня есть случай, когда мне может или не нужно добавлять наблюдаемые в список. Затем я хочу 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
, то наблюдаемое не добавляется в список, и когда выполняется forkJoin
, ...documents
находятся в положении chatThread
свойство в методе подписки (ну, первый документ!).
Есть ли способ обеспечить позиционирование ответов от forkJoin
? Или я / я могу использовать другой подход?