public reloadUser(){
this.reloadUserGating();
return this.request.get(`${this.url}/`).pipe(tap(user => this.currentUserSubject.next(user)));
}
Мне нужно заставить метод reloadUser()
дождаться завершения обоих запросов, а затем выдать наблюдаемое. Но это не должно быть последовательно - оба сразу.
Чтобы дать вам синтаксис и возвращаемый тип forkjoin
в этом контексте:
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
возвращает новую наблюдаемую, где результатом является массив, содержащий результаты других наблюдаемых.
Примечание. forkJoin
требует завершения Observables, а не просто запуска значения. combineLatest
можно использовать, если наблюдаемые не завершаются.