2
respostas

Dúvida sobre a aplicabilidade do shareReplay no projeto

Se o shareReplay gera um cache, por que verificamos se o !this.cache$ ? Entendo que, com essa lógica, nem precisaria usar o shareReplay, pois ele só vai fazer a requisição uma única vez, durante o ciclo de vida da aplicação, que é quando o service é instanciado e a propriedade ainda está undefined.

2 respostas

Opa Ângelo, tudo certo?

O operador shareReplay desempenha a função de preservar no cache o resultado de um Observable, prevenindo a necessidade de realizar solicitações HTTP sem propósito.

Dentro do contexto do desafio em questão, a verificação !this.cache$ é implementada para assegurar que a solicitação seja executada somente uma vez, ao longo do ciclo de vida total da aplicação. Caso a variável cache$ já tenha sido definida, isso indica que os dados já foram previamente adquiridos e estão retidos em memória cache, eliminando, assim, a necessidade de realizar uma nova requisição.

A utilização do shareReplay é interessante nesse caso, pois permite que os dados sejam reutilizados sempre que necessário, sem a necessidade de fazer uma nova requisição à API. Isso otimiza o desempenho da aplicação, evitando chamadas desnecessárias.

Fico à disposição.

Tenha um bom dia e bons estudos.

Entendo, mas o que quero dizer é que independente de ser shareReplay ou não, o operator nunca vai fazer uma nova requisição. Pois ele sempre vai verificar antes se o this.cache$ é falsy e retornar o valor que já está no subscribe. Como na subscrição já existe um valor, ele sempre vai pegar o mesmo valor que já está subscrito e nunca vai atualizar com o cache. Entendo que o ideal seria não ter o if verificando o valor falsy da propriedade this.cache$