patterntypescriptangularCritical
What is pipe for in RxJS?
Viewed 0 times
rxjswhatpipefor
Problem
I think I have the base concept, but there are some obscurities
So in general this is how I use an
If I want to filter data I can use this:
I can also do this:
So my questions are:
So in general this is how I use an
Observable:observable.subscribe(x => {
})
If I want to filter data I can use this:
import { first, last, map, reduce, find, skipWhile } from 'rxjs/operators';
observable.pipe(
map(x => {return x}),
first()
).subscribe(x => {
})
I can also do this:
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/first';
observable.map(x => {return x}).first().subscribe(x => {
})
So my questions are:
- What is the difference?
- If there is no difference, why the function
pipeexists?
- Why those functions need different imports?
Solution
The "pipeable" (former "lettable") operators is the current and recommended way of using operators since RxJS 5.5.
I strongly recommend you to read the official documentation on pipeable operators
The main difference is that it's easier to make custom operators and that it's better treeshakable while not altering some global
Using separate
I strongly recommend you to read the official documentation on pipeable operators
The main difference is that it's easier to make custom operators and that it's better treeshakable while not altering some global
Observable object that could possible make collisions if two different parties wanted to create an operator of the same name.Using separate
import statement for each operator 'rxjs/add/operator/first' was a way to make smaller app bundles. By importing only operators you need instead of the entire RxJS library you can significantly reduce the total bundle size. However the compiler can't know if you imported 'rxjs/add/operator/first' because you really need it in you code or you just forgot to remove it when refactoring your code. That's one of the advantages of using pipeable operators where unused imports are ignored automatically.Context
Stack Overflow Q#48668701, score: 112
Revisions (0)
No revisions yet.