Я пишу сервис на Angular 5 (RxJs 5.5.1), и у меня есть следующий сценарий, в котором я пытаюсь реализовать рабочий процесс входа в систему.
...
signInBasic(user: string, pwd: string): Observable<AuthenticationStatus> {
return this.http.post('some_url', params, { observe: 'response', responseType: 'text' })
.map((response: HttpResponse<Object>) => {
this.status = response.status === 200 ? AuthenticationStatus.Authenticated : AuthenticationStatus.NotAuthenticated;
return this.status;
})
...
/* HERE */
...
}
getPrimaryInfo(): Observable<any> {}
getPermissions(): Observable<any> {}
...
В точке /* HERE */
, в зависимости от значения this.status
(в частности, Authenticated
), я хотел бы запустить еще два HTTP-запроса (с помощью методов getPrimaryInfo
и getPermissions
), чтобы получить некоторые данные пользователя от бэкэнд После завершения обоих я хотел бы вернуть this.status
как возвращаемое значение метода signInBasic
. Если пользователь не аутентифицирован, я все равно верну this.status
со значением AuthenticationStatus.NotAuthenticated
, поскольку оно было установлено ранее.
Я искал forkJoin
, но я не понимаю, как я могу вернуть что-то только после завершения этих двух HTTP-вызовов.