Quali sono i metodi pipe e tap nel tutorial angolare? [chiuso]


130

Sto seguendo il tutorial su https://angular.io e ho problemi a trovare la documentazione; specificamente per i metodi pipee tap. Non riesco a trovare nulla su https://angular.io o http://reactivex.io/rxjs/ .

La mia comprensione è che pipee tapsono entrambi metodi di Observable, che viene importato da RxJS, giusto? Cosa dovrebbero fare?

Questi metodi fanno parte di Angular? Cosa fanno questi due metodi?


57
Trovo strano quando gli utenti fanno domande appropriate, ricevono una risposta adeguata, e tuttavia per i mod non hanno idea di cosa sta chiedendo OP: D - perché diavolo è "fuori tema"?
Paul Strupeikis

Risposte:


109

Hai ragione, la documentazione manca di questi metodi. Tuttavia, quando ho scavato nel repository rxjs, ho trovato bei commenti su tap (troppo lungo per incollare qui) e operatori 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))
   */

In breve:

Tubo : utilizzato per unire operatori funzionali in una catena. Prima potevamo solo farlo observable.filter().map().scan(), ma poiché ogni operatore RxJS è una funzione autonoma piuttosto che un metodo Observable, dobbiamo pipe()creare una catena di quegli operatori (vedi esempio sopra).

Toccare : può eseguire effetti collaterali con i dati osservati ma non modifica in alcun modo il flusso. Precedentemente chiamato do(). Puoi pensarlo come se osservabile fosse un array nel tempo, quindi tap()sarebbe un equivalente a Array.forEach().


4
Grazie per la risposta e i link. Parte del mio problema è che sono nuovo in Angular e non sono sicuro di quali metodi facciano parte di JavaScript o Node.js o RxJS o Angular di base. La tua risposta mi ha aiutato a chiarirlo. Grazie.
Ben Rubin

3
@ BenRubin, ti consiglierei di iniziare imparando correttamente JS nativo prima di iniziare a imparare gli strumenti. Renderà molto più facile capire gli strumenti e cosa fanno effettivamente (e sapere quali parti sono native rispetto allo strumento).
Magnus Eriksson

21
dalla 5.5 e l'introduzione di operatori pipeable (una volta noti come lettable), dorinominati come tap... In breve, è un casino. github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md
Luca

3
filterfunziona esattamente come Array.filter- mantiene solo i valori che soddisfano la regola (in questo caso divisibile per 2); map(di nuovo come Array.map) cambia ogni valore (in questo caso lo aggiunge a se stesso); scanè molto interessante ed ecco una bella spiegazione: learnrxjs.io/operators/transformation/scan.html
Daniel Kucal

1
sembra che la scansione sia ridotta
latj
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.