Допустим, у нас есть иерархическая структура данных - т. Е. Каждый элемент может иметь одного или нескольких дочерних элементов и дочерних элементов, связанных через родительский идентификатор.
Допустим, мы также хотим перейти отот текущей группы до родительского объекта, чтобы получить структуру.
Хотя большая часть документации Angular, кажется, ссылается на использование Observables в цикле while (то есть в то время как parentId! = undefined), у нас есть проблема, заключающаяся в том, чтоцикл while может продолжаться несколько раз, потому что мы подписываемся на вывод наблюдаемой, которую мы не получим до тех пор, пока не будет выполнено наблюдаемое.
while (childGroup.parentGroupId !== undefined) {
this.groupsService.getGroup(childGroup.parentGroupId).subscribe(group => {
groupHierarchy.unshift(group);
childGroup = group;
});
}
Так что тогда нам может потребоваться выполнить объединениеПоследний, чтобы мы моглиможет обрабатывать все наблюдаемые вместе.
while (childGroup.parentGroupId !== undefined) {
observables.push(this.groupsService.getGroup(childGroup.parentGroupId))
}
combineLatest(observables).subscribe( data => { // Process Here });
Я использовал это в нескольких других примерах, когда у меня есть список данных для сбора, но мне было интересно, есть ли причина, по которой мы не используемОбещание вместо Наблюдаемого?:
this.groupsService.getGroup2(childGroup.parentGroupId).then(group => { groupHierarchy.unshift(group); childGroup = group; } )
Действительно, мне, возможно, придется использовать это в любом случае, если вы не можете придумать другое решение.Мне нужно подождать, чтобы получить родительский узел текущего узла, прежде чем я выясню, каким будет следующий родительский узел.
Ваши мысли оценены.