1

在下面的代码中,执行永远不会转到mergemap。寻求有关更正此代码的帮助。

要求是,一旦我从 getBns 方法获得响应,我需要对响应执行一些操作,然后使用点击运算符更新 HTML 中使用的一些标志。

组件.ts *

 this.bns$ = this.myService.getBns().pipe(
          mergeMap((bns) => {
            performloadKey()
            return bns
          }),
          tap((bns) => {
            console.log(bns);
          })
        );


this.bns$.pipe(takeUntil(this.destroyed$)).subscribe();

服务.ts

getBns(): Observable<any>{
    return of(mockData); 
  }
4

2 回答 2

2

我想这performLoadKey也返回一个可观察的?如果是这样,我猜你想要执行以下操作:

this.bns$ = this.myService.getBns().pipe(
  mergeMap((bns) => performloadKey().pipe(
    mapTo(bns)
  )),
  tap((bns) => console.log(bns))
);
于 2021-08-25T10:06:38.727 回答
2

MergeMap 仅在您在回调中返回 Observable 时才有效。您正在订阅of(bns),因此在回调中您将返回 value bns。如果bns不是 Observable 并且不发出任何值,则管道永远不会继续。

于 2021-08-25T10:07:45.033 回答