Estou seguindo o tutorial em https://angular.io e estou tendo problemas para encontrar documentação; especificamente para os métodos pipe
e tap
. Não consigo encontrar nada em https://angular.io ou http://reactivex.io/rxjs/ .
Meu entendimento é que, pipe
e tap
os dois métodos Observable
, que estão sendo importados do RxJS, estão corretos? O que eles deveriam fazer?
Esses métodos fazem parte do Angular? O que esses dois métodos fazem?
Respostas:
Você está certo, a documentação carece desses métodos. No entanto, quando procurei no repositório rxjs, encontrei bons comentários sobre operadores de torneira (muito tempo para colar aqui) e de pipe :
Em resumo:
Tubo : Usado para unir operadores funcionais em uma corrente. Antes que pudéssemos fazer isso
observable.filter().map().scan()
, mas como todo operador RxJS é uma função autônoma e não um método do Observable, precisamospipe()
criar uma cadeia desses operadores (veja o exemplo acima).Tocar : pode executar efeitos colaterais com os dados observados, mas não modifica o fluxo de forma alguma. Anteriormente chamado
do()
. Você pode pensar nisso como se o observável fosse uma matriz ao longo do tempo, entãotap()
seria equivalente aArray.forEach()
.fonte
do
que foram renomeados comotap
... Em suma, é uma bagunça. github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.mdfilter
funciona exatamente comoArray.filter
- mantém apenas valores cumprindo a regra (neste caso divisível por 2);map
(novamente comoArray.map
) altera todos os valores (neste caso, os adiciona a si mesmos);scan
é mais interessante e aqui está uma boa explicação: learnrxjs.io/operators/transformation/scan.html