RXJS MergeMap not getting executed

1.8k Views Asked by At

In the below code, the execution never goes to mergemap. Looking for some help with correcting this code.

Requirement is, once i get response from getBns method, i need to perform some operation with response and then using the tap operator to update few flags that are used in HTML.

Component.ts*

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


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

service.ts

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

There are 2 best solutions below

1
On BEST ANSWER

MergeMap only works if you return an Observable inside the callback. You are subscribing of(bns) so inside the callback you are returning the value bns. If bns isn't an Observable and doesn't emit any values, the pipe never continues.

2
On

I suppose the performLoadKey is also returning an observable? If so, I guess you want to do the following:

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