Observable内部的承诺不返回值

时间:2019-05-31 23:03:27

标签: promise rxjs observable powerbi powerbi-embedded

我试图将Microsoft PowerBi嵌入我的angular 6项目中。接下来的代码期望返回一个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中的promise会被调用并返回结果,从记录器中我可以看到PowerBI:newMyPowerbiReport页面已更新,并且页面数组。但没有任何回报。

1 个答案:

答案 0 :(得分:0)

最终已修复,此代码没有任何问题,问题出在父方法中,我在父方法中使用了forkjoin,似乎forkjoin并未订阅此可观察的值,请用scan更改forkjoin并一切都随着阳光的照耀而起作用。

相关问题