Это должно работать (так как вы использовали тег "angular6", я предполагаю, что rxjs 6):
this._configurationService.getSessionsByCampaign(this.campaignDBID).pipe(
mergeMap(sessionsArray => from(sessionsArray)),
mergeMap(session =>
this._configurationService.getDNByDBID(session.origDNDBID.value)
)
)
Итак, во-первых, вызывается функция getSessionsByCampaign, которая возвращает Observable массивасессий.Мы передаем эту наблюдаемую через два оператора mergeMap:
Первый mergeMap вызывает оператор from, который превращает Observable of array в массив Observables.
Второй mergeMap вызывает функцию getDNByDBIDна значение каждой из наблюдаемых в массиве.
Это будет генерировать каждый из результатов по очереди.
Если вы хотите создать одну наблюдаемую с массивом результатов, добавьтеtoArray () до конца канала, как в:
this._configurationService.getSessionsByCampaign(this.campaignDBID).pipe(
mergeMap(sessionsArray => from(sessionsArray)),
mergeMap(session =>
this._configurationService.getDNByDBID(session.origDNDBID.value)
),
toArray()
)
Ваш импорт будет:
import {from} from 'rxjs';
import {mergeMap, toArray} from 'rxjs/operators';
Редактировать: Это будет выглядеть так с подпиской:
this._configurationService.getSessionsByCampaign(this.campaignDBID).pipe(
mergeMap(sessionsArray => from(sessionsArray)),
mergeMap(session =>
this._configurationService.getDNByDBID(session.origDNDBID.value)
),
toArray()
).subscribe(
dnArray => this.dns = dnArray,
err => this.console.error(err); // or other, better error-handling
)