Observable 中的 Promise 没有 return 值

Promise inside Observable does not return value

我正在尝试将 Microsoft PowerBi 嵌入到我的 angular 6 项目中。下一个代码期待 return 一个 powerbi 报告对象,但没有 returning,不知道为什么:

 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 并且 returns 结果,从记录器我可以看到 PowerBI:newMyPowerbiReport 页面更新和页面数组。但它什么都没有 returned。

终于修复了,这段代码没有任何问题,问题出在父方法中,我在父方法中使用了 forkjoin,似乎 forkjoin 没有订阅这个 observable,将 forkjoin 更改为 scan 万事如意。