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

Rxjs

 Rxjs

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!