@HenarMendiola
@HenarMendiola
@HenarMendiola
PR
Conceptos básicos
Con las manos en la masa
Gran poder
Fin
@HenarMendiola
PR
Conceptos básicos
Con las manos en la masa
Gran poder
Fin
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
const { interval } = require('rxjs');
const myFirstObservable = interval(500);@HenarMendiola
@HenarMendiola
@HenarMendiola
const { interval } = require('rxjs');
const myFirstObservable = interval(500);
myFirstObservable.subscribe();@HenarMendiola
@HenarMendiola
@HenarMendiola
const { interval } = require('rxjs');
const myFirstObservable$ = interval(500);
const myObserver = {
next: (x) => console.log('next ', x),
complete: () => console.log('complete'),
error: (e) => console.log('error ', e),
}
myFirstObservable$.subscribe(myObserver);@HenarMendiola
next 0
next 1
next 2
next 3
next 4
next 5
next 6
next 7
next 8
next 9@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
const {
map,
interval,
filter,
take
} = require('rxjs');
const myFirstObservable$ = interval(500);
const myObserver = {
next: (x) => console.log('next ', x),
complete: () => console.log('complete'),
error: (e) => console.log('error ', e),
}
myFirstObservable$
.pipe(
filter(x => x%2 === 0),
map(x => x + 5),
take(5)
)
.subscribe(myObserver);@HenarMendiola
next 5
next 7
next 9
next 11
next 13
complete@HenarMendiola
@HenarMendiola
@HenarMendiola
Evitar lógica dentro de subscribe
@HenarMendiola
const { interval } = require('rxjs');
const observable$ = interval(700);
observable$
.subscribe((value) => {
const triple = value * 3;
if ( triple % 2 !== 0) {
return
} else {
console.log('mi number ', triple);
}
})@HenarMendiola
const {
interval,
filter,
map,
tap
} = require('rxjs');
const observable$ = interval(700);
observable$
.pipe(
map(x => x * 3),
filter(x => x % 2 === 0),
tap(console.log)
)
.subscribe()@HenarMendiola
Evitar la lógica duplicada
@HenarMendiola
const kitten = [
{
name: 'Assata',
nickname: 'Croquetis',
age: 1,
colors: ['black', 'white'],
hunger: 20,
weight: 3,
state: 'alive'
}, {
name: 'Txomski',
nickname: 'Pistachete',
age: 8,
hunger: 10,
weight: 4,
colors: ['black'],
state: 'alive'
}, {
name: 'Misis',
nickname: 'La señora',
age: 12,
hunger: 20,
weight: 3,
colors: ['brown', 'black', 'white'],
state: 'dead'
},
];@HenarMendiola
const kitten$ = from(kitten);
kitten$
.pipe(
filter(cat => cat.state !== 'dead'),
scan((acum, curr) => {
return acum + curr.age;
}, 0)
)
.subscribe(
(x) => console.log('total age ', x)
)
kitten$
.pipe(
filter(cat => cat.state !== 'dead'),
scan((acum, curr) => {
return acum + curr.weight * curr.hunger;
}, 0)
)
.subscribe(
(x) => console.log('total hunger ', x)
)@HenarMendiola
Evitar la lógica duplicada
const aliveKittens$ = from(kitten)
.pipe(
filter(cat => cat.state !== 'dead')
);
aliveKittens$
.pipe(
scan((acum, curr) => {
return acum + curr.age
}, 0)
)
.subscribe(
(x) => console.log('total age ', x)
);
aliveKittens$
.pipe(
scan((acum, curr) => {
return acum + curr.weight * curr.hunger;
}, 0)
)
.subscribe(
(x) => console.log('total hunger ', x)
);@HenarMendiola
Utilizar share para streams duplicado
const {
share,
map,
tap,
fromEvent,
switchMap
} = rxjs;
const { fromFetch } = rxjs.fetch;
const options = {
method: 'GET',
url,
headers,
selector: res => res.json()
};
const fetch$ =
fromFetch(
url,
options
)
fetch$.subscribe(console.log);
fetch$.subscribe(console.log);const {
share,
map,
tap,
fromEvent,
switchMap
} = rxjs;
const { fromFetch } = rxjs.fetch;
const options = {
method: 'GET',
url,
headers,
selector: res => res.json()
};
const fetch$ =
fromFetch(
url,
options
).pipe(share())
fetch$.subscribe(console.log);
fetch$.subscribe(console.log);Evitar anidamiento
Evitar anidamiento
Utilizar subject para finalizar las subscripciones
Utilizar subject para finalizar las subscripciones
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola
@HenarMendiola