У меня есть функция, которая должна разрешать несколько документов из firebase
fetchDocuments(documentIds: string[]): Observable<TreeNodeDocument[]> {
const observables = [];
for(let id of documentIds){
observables.push(this.fetchDocument(id));
}
return Observable.combineLatest(observables, (...docs: TreeNodeDocument[]) => {
//some transformations on the resolved documents
return docs;
});
}
this.fetchDocument(id)
возвращает наблюдаемое типа TreeNodeDocument
.
Эта функция работает до тех пор, пока все документы могут быть разрешены. Теперь иногда случается, что некоторые документы не могут быть разрешены, тогда соответствующая наблюдаемая fetchDocument(id)
потерпит неудачу. Это нормально и ожидается, что некоторые документы не могут быть решены. Однако Observable.combineLatest
завершается неудачей полностью, если один из них дает сбой (я понимаю, это хорошее поведение по умолчанию).
Теперь у меня вопрос, могу ли я использовать combineLatest
таким образом, чтобы я получал только те документы, с которыми работала выборка, и просто игнорировал те, на которых произошел сбой? Или я могу достичь этого по-другому?
Приветствия