Deadpool_er
Deadpool_er

Reputation: 255

RXJS MergeMap not getting executed

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); 
  }

Upvotes: 1

Views: 2239

Answers (2)

Tobias S.
Tobias S.

Reputation: 23915

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.

Upvotes: 2

Poul Kruijt
Poul Kruijt

Reputation: 71961

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))
);

Upvotes: 2

Related Questions