public reloadUser(){
this.reloadUserGating();
return this.request.get(`${this.url}/`).pipe(tap(user => this.currentUserSubject.next(user)));
}
I need to make reloadUser()
method wait until both requests complete and then emit the observable. But it should not be sequally - both at once.
CodePudding user response:
If reloadUserGating
returns an observable then you can use forkJoin
Some good examples of forkJoin
with Angular HttpClient
here:
CodePudding user response:
To give you the syntax and return type of forkjoin
in this context:
public reloadUser(): Observable<[ReturnType1, ReturnType2]>{
const obs1: Observable<ReturnType1> = this.reloadUserGating();
const obs2: Observable<ReturnType2> = this.request
.get(`${this.url}/`)
.pipe(tap((user) => this.currentUserSubject.next(user)));
return forkJoin([obs1, obs2]);
}
forkJoin
returns a new observable, where the result is an array containing the results of the other observables.
Note: forkJoin
does require the Observables to complete, not just fire a value. combineLatest
can be used if the observables don't complete.