Versão Limpa e Conveniente
Expandindo a incrível resposta do M Fuat NUROĞLU em converter o observável em uma promessa, aqui está a versão muito conveniente.
const value = await observable.toPromise();
console.log(value)
A vantagem disso é que podemos usar esse valor como uma variável normal sem introduzir outro bloco aninhado!
Isso é especialmente útil quando você precisa obter vários valores de vários observáveis. Arrumado e limpo.
const content = await contentObservable.toPromise();
const isAuthenticated = await isAuthenticatedObservable.toPromise();
if(isAuthenticated){
service.foo(content)
}
Obviamente, você terá que fazer a sua função de contenção async
se quiser seguir esta rota. Você também pode apenas .then
prometer se não deseja que a função que contém seja assíncrona
Não tenho certeza se existem vantagens e desvantagens com essa abordagem. Fique à vontade para nos informar nos comentários, para que possamos estar cientes.
PS Se você gostou desta resposta, não se esqueça de votar também na resposta de M Fuat NUROĞLU :)