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

Tap ou Pipe

No minuto 05:20 o professor usa a função tap para salvar o token. Isso não poderia ser feito diretamente na função pipe?

2 respostas
solução!

Olá, Diogo! Tudo bem?

Acredito que sim, poderia, mas o tap é a melhor prática nesse cenário.

Como nós não estamos interessados no valor resultante, ou seja, não queremos manipular/modificar o Observable, e sim fazer um efeito colateral, usamos o tap porque ele "sai" do fluxo de dados.

Então, recebemos o dado no tap, ele executa algo que, apesar de dependente do valor do Observable, não afeta o Observable em si, e o fluxo continua.

Na documentação do RxJS, há uma ótima ilustração do "posicionamento" do tap em relação ao processo principal, além de outras informações: RxJS - Tap.

Mas destaco esse trecho:

Tap é desenhado para permitir ao desenvolvedor um local designado (específico) para efetuar efeitos colaterais (side effects). Enquanto você pode efetuar efeitos colaterais dentro de um map ou de um mergeMap, isso tornaria as funções impuras, o que não é sempre um grande problema, mas vai fazer com que você não possa fazer coisas como memoizar essas funções. O operador tap é desenhado apenas para tais efeitos colaterais, para ajudar você a remover efeitos colaterais de outras operações.

Espero ter ajudado!

Obrigado