Получилась такая вот странная конструкция для подгрузки конфига, если его нет в кэше:
----
private getAuthConfig(): Observable<boolean> {
if (this.appConfig.authServerConfig != null) {
return Observable.of(true);
}
return this.httpClient.get("{auth}/.well-known/openid-configuration").flatMap((response: string) => {
this.appConfig.authServerConfig = response;
return Observable.of(true);
}).catch(error => {
return Observable.of(false);
});
}
И такой код, для его вызова:
----
this.getAuthConfig().subscribe((config) => {
if (config != true) {
console.error("error: auth server config");
return;
}
console.info(this.appConfig.authServerConfig["token_endpoint"]);
});
Но как-то очень уж громоздко выглядит для простой логики.
И ещё возникает проблема, когда требуется несколько http-запросов последовательно выполнить в рамках одного блока логики, т.е.:
1. Что-то забрать с сервера по http-get.
2. После п.1. отправить первый http-post.
3. После п.2. что-то сделать с полученным данными, выполнить следующий http-post.
4. После п.3 произвести обработку данных для отображения пользователю.
У меня, почему-то, каждый раз получаются многоуровневые вложенные конструкции, которые сложно читать. Т.е. по логике кода - одноуровневые последовательные запросы, а реализация - многовложенная. Можно это как-то обойти или это специфика JS?