Обратное восхождение на дерево ребенка / родителя в Angular - Observable vs Promise - PullRequest
1 голос
/ 15 апреля 2019

Допустим, у нас есть иерархическая структура данных - т. Е. Каждый элемент может иметь одного или нескольких дочерних элементов и дочерних элементов, связанных через родительский идентификатор.

Допустим, мы также хотим перейти отот текущей группы до родительского объекта, чтобы получить структуру.

Хотя большая часть документации 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; } )

Действительно, мне, возможно, придется использовать это в любом случае, если вы не можете придумать другое решение.Мне нужно подождать, чтобы получить родительский узел текущего узла, прежде чем я выясню, каким будет следующий родительский узел.

Ваши мысли оценены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...