Tôi có một trường hợp mà tôi có thể cần hoặc không cần thêm vật có thể quan sát vào danh sách. Sau đó, tôi muốn forkJoin
các vật có thể quan sát được để trang có thể tải khi tất cả dữ liệu có sẵn.
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);
});
Vấn đề mà tôi đang gặp phải là nếu tôi không có this.task.associatedChatThreadId
, thì cái có thể quan sát được sẽ không được thêm vào danh sách và khi forkJoin
nó được thực thi, những cái đó ...documents
sẽ ở vị trí của thuộc chatThread
tính trong phương thức đăng ký (tốt, tài liệu đầu tiên! ).
Có cách nào để đảm bảo vị trí của các câu trả lời từ a forkJoin
không? Hay tôi / tôi có thể sử dụng một cách tiếp cận khác không?