@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