O que são métodos de tubulação e torneira no tutorial Angular? [fechadas]

128

Estou seguindo o tutorial em https://angular.io e estou tendo problemas para encontrar documentação; especificamente para os métodos pipee tap. Não consigo encontrar nada em https://angular.io ou http://reactivex.io/rxjs/ .

Meu entendimento é que, pipee tapos 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?

Ben Rubin
fonte
55
Acho estranho quando os usuários fazem perguntas apropriadas, recebem uma resposta adequada e, no entanto, para os mods não sabem o que o OP está perguntando: D - por que diabos isso é "fora de tópico"?
Paul Strupeikis

Respostas:

106

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 :

  /**
   * Used to stitch together functional operators into a chain.
   * @method pipe
   * @return {Observable} the Observable result of all of the operators having
   * been called in the order they were passed in.
   *
   * @example
   *
   * import { map, filter, scan } from 'rxjs/operators';
   *
   * Rx.Observable.interval(1000)
   *   .pipe(
   *     filter(x => x % 2 === 0),
   *     map(x => x + x),
   *     scan((acc, x) => acc + x)
   *   )
   *   .subscribe(x => console.log(x))
   */

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ão tap()seria equivalente a Array.forEach().

Daniel Kucal
fonte
4
Obrigado pela resposta e pelos links. Parte do meu problema é que eu sou novo no Angular e não tenho certeza de quais métodos fazem parte do JavaScript principal ou Node.js ou RxJS ou Angular. Sua resposta me ajudou a esclarecer isso. Obrigado.
Ben Rubin
3
@BenRubin Eu recomendaria que você aprendesse o JS nativo corretamente antes de começar a aprender as ferramentas. Isso tornará muito mais fácil entender as ferramentas e o que elas realmente fazem (e saber quais partes são nativas versus a ferramenta).
Magnus Eriksson
20
desde a versão 5.5 e a introdução de operadores pipeable (antes conhecidos como lettable), doque foram renomeados como tap... Em suma, é uma bagunça. github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md
Luca
3
filterfunciona exatamente como Array.filter- mantém apenas valores cumprindo a regra (neste caso divisível por 2); map(novamente como Array.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
Daniel Kucal
1
olhares como é digitalizar reduzir
latj