Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Rxjs

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

 Rxjs

Avatar for Danila Marchenkov

Danila Marchenkov

September 13, 2017
Tweet

More Decks by Danila Marchenkov

Other Decks in Education

Transcript

  1. • audit • auditTime • filter • last • buffer

    • bufferWhen • catch • combine • combineAll • combineLatest • concat • count • debounce • delay • distinct • do • every • exhaust • expand • findIndex • find • forEach • groupBy • isEmpty • lift • map • mapTo • max • merge • mergeAll • min • multicast
  2. const obs = Observable.from([1, 2, 3, 4]); obs .map(val =>

    `obs${val}`) .subscribe(it => console.log(it)); >obs1 >obs2 >obs3 >obs4
  3. let emitter; const obs: Observable<number> = new Observable(e => emitter

    = e); [1, 2, 3, 4].forEach(it => emitter.next(it)); obs.subscribe(it => console.log(it));
  4. let emitter; const obs: Observable<number> = new Observable(e => emitter

    = e); [1, 2, 3, 4].forEach(it => emitter.next(it)); obs.subscribe(it => console.log(it)); >ERROR TypeError: Cannot read property 'next' of undefined
  5. let emitter; const obs: Observable<number> = new Observable(e => emitter

    = e); obs.subscribe(it => console.log(it)); [1, 2, 3, 4].forEach(it => emitter.next(it)); >1 >2 >3 >4
  6. import { Observable } from ‘rxjs/Rx'; export class Service {

    private stream: Observable<T> = new Observable(obs => this.emitter = obs) private emitter; public get onSteamEvent() { return this.steam; } private someMethod() { . . . this.emitter.next({someData}); } }
  7. import { Observable } from ‘rxjs/Rx'; export class Service {

    private stream: Observable<T> = new Observable(obs => this.emitter = obs).share(); private emitter; public get onSteamEvent() { return this.steam; } private someMethod() { . . . this.emitter.next({someData}); } }
  8. var cold = new Observable((observer) => { var producer =

    new Producer(); // have observer listen to producer here }); COLD
  9. HOT var producer = new Producer(); var hot = new

    Observable((observer) => { // have observer listen to producer here });
  10. const obs: Observable<number> = new Observable(e => emitter = e);

    obs.subscribe(it => console.log(it)); obs.map(it => it + 1).subscribe(it => console.log(it)); [1, 2, 3, 4].forEach(it => emitter.next(it));
  11. const obs: Observable<number> = new Observable(e => emitter = e);

    obs.subscribe(it => console.log(it)); obs.map(it => it + 1).subscribe(it => console.log(it)); [1, 2, 3, 4].forEach(it => emitter.next(it)); >2 >3 >4 >5
  12. const obs = new Observable<number>(e => emitter = e).share(); obs.subscribe(it

    => console.log(it)); obs.map(it => it + 1).subscribe(it => console.log(it)); [1, 2, 3, 4].forEach(it => emitter.next(it)); >1 >2 >2 >3 >3 >4 >5
  13. Observable > Promise • Observable is reusable • Observable is

    cancellable • A lot of powerful operators • Hot & Cold observables • Merging a lot of observables • Multiple pipeline instead of only .then, .catch • Obs can become Promise :3
  14. Subject will NOT be disposed after all subscribers disconnected Use

    Subjects only in place, where two-way data flow is certainly needed!