Обещание внутри Observable не возвращает значение - PullRequest
0 голосов
/ 01 июня 2019

Я пытаюсь встроить Microsoft PowerBi в мой угловой проект. следующие коды ожидают возврата объекта отчета powerbi, но ничего не возвращается, понятия не имею, почему:

 private embedPowerBiReportAndGetPages(htmlElement: HTMLElement, newMyPowerbiReport: MyPowerbiReport): Observable<MyPowerbiReport> {
const config: IEmbedConfiguration = PowerbiHelper.createReportConfig(newMyPowerbiReport);
const microsoftReport: msReport = this.msPowerBiService
  .embed(htmlElement, config) as msReport;
return fromEvent(microsoftReport, 'loaded')
  .pipe(
    tap(() => this.logger.debug('PowerBI: loaded')),
    mergeMap(async() => {
      this.logger.debug('PowerBI: embed pages loaded');
      const msPages: Page[] = await microsoftReport.getPages();
      this.logger.debug('PowerBI: msPages', msPages);
      newMyPowerbiReport.pages = msPages.map((page: Page) => PowerbiHelper.msPageToEmbeddedPageMapper(page, newMyPowerbiReport));
      this.logger.debug('PowerBI: newMyPowerbiReport pages updated', newMyPowerbiReport);
      return newMyPowerbiReport;
    }),
    finalize(() => microsoftReport.off('loaded'))
  );

}

Хорошо, обещание внутри mergeMap вызывается и также возвращает результат, из регистратора я вижу PowerBI: обновлены страницы newMyPowerbiReport и массив страниц. но ничего не возвращается.

1 Ответ

0 голосов
/ 01 июня 2019

наконец исправлено, с этим кодом ничего нет, проблема была в родительском методе, я использовал forkjoin в родительском методе, похоже, что forkjoin не подписывается на это наблюдаемое, измените forkjoin с scan и все работает, как светит солнце.

...