Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Async Pipe ou Take(1) ou First()

Qual é o melhor a ser usado do ponto de vista de performance e qualidade de código, eles tem a mesma funcionalidade? vai ter casos em que será necessário usar um ou outro?

2 respostas

Fala ai Gustavo, tudo bem? Cada uma tem suas vantagens e desvantagens, não tem como definir uma melhor ou pior, varia muito da experiência que tu quer para as pessoas que usam sua plataforma.

O async pipe vai resolver as requisições assíncronas diretamente no template da página.

Já o take e first é boa para quando você tem uma lista e precisa apenas de parte dela, mas, nesse caso seria melhor ainda a API retornar um único elemento.

Espero ter ajudado.

solução!

Venho com toda humildade para discordar do instrutor quanto a take e first ou talvez eu não tenha entendido muito bem a resposta. Aqui vai minha opinião:

take() aceita um número com a quantidade de vezes que você irá ouvir a sua fonte de stream de dados. Se a primeira vez que a fonte de dados emitir {message: 'lorem'} e logo em seguida emitir {message: 'lorem ipsum dolor sit'}, (por qualquer motivo) você receberá apenas a primeira mensagem.

first() é mais completo e aceita uma callback function que pode te informar quando parar de ouvir a fonte de dados. por exemplo poderia aceitar uma callback function assim:

dataSource$.pipe(first(value => value > 5)).subscribe(...