Skip to content

Instantly share code, notes, and snippets.

View kosich's full-sized avatar

Kostia P kosich

View GitHub Profile
@kosich
kosich / index.js
Last active March 5, 2019 11:26
Pausable Observable using windowToggle
const { rxObserver, palette } = require('api/v0.3');
const { timer, Subject, from } = require('rxjs');
const { windowToggle, startWith, distinctUntilChanged, flatMap, take, zip, filter, skip, map } = require('rxjs/operators');
// stream for coloring
const palette$ = from(palette);
const source$ = timer(0, 10).pipe(
take(10),
// get color for each item
@kosich
kosich / index.js
Last active March 5, 2019 13:04
Event spacing in RxJS
const { rxObserver, palette } = require('api/v0.3');
const { merge, timer, from } = require('rxjs');
const { map, concatMap, take, zip, ignoreElements, startWith } = require('rxjs/operators');
// stream for coloring
const palette$ = from(palette);
const source$ = merge(
timer(0, 33),
timer(5, 17)
@kosich
kosich / index.js
Created March 5, 2019 14:03
Pausable Observable using takeUntil with repeatWhen
const { rxObserver, palette } = require('api/v0.3');
const { timer, Subject, from, empty } = require('rxjs');
const { takeUntil, take, repeatWhen, filter, zip, map, share } = require('rxjs/operators');
// stream for coloring
const palette$ = from(palette);
const source$ = timer(0, 10).pipe(
take(10),
// get color for each item
@kosich
kosich / index.js
Last active March 5, 2019 15:23
Pausing observable on mouse hover with event spacing example
const { rxObserver } = require('api/v0.3');
const { of, timer, fromEvent, merge, empty, interval, Subject, forkJoin } = require('rxjs');
const { startWith, switchMap, distinctUntilChanged, map, mapTo, take, tap, concatMap, ignoreElements, multicast, shareReplay } = require('rxjs/operators');
const mouse$ = new Subject();
const TIMEOUT = 50;
const notifications$ = new Subject();
const { rxObserver, palette } = require('api/v0.3');
const { of, timer } = require('rxjs');
const { retry, switchMap, timeout } = require('rxjs/operators');
let index = 0;
const source$ = of(void 0).pipe(
switchMap(()=>
// 4 attempts
timer([20, 20, 20, 5][index++])
)
@kosich
kosich / index.js
Last active March 18, 2019 15:41
retryWhen completing with inner observable
const { rxObserver } = require('api/v0.3');
const { timer, NEVER } = require('rxjs');
const { merge, map, tap, take, finalize, retryWhen } = require('rxjs/operators');
const sourceObserver = rxObserver('Source');
const errorsObserver = rxObserver('Errors');
const resultObserver = rxObserver('Result');
timer(10, 10).pipe(
map(x => {
@kosich
kosich / index.js
Created March 21, 2019 15:51
RxJSPuzzle #2 Base
const { rxObserver, palette } = require('api/v0.3');
const { timer } = require('rxjs');
const { take } = require('rxjs/operators');
const source$ = timer(0, 5).pipe(
take(6)
);
const result$ = source$.pipe(
// add your code here...
const { rxObserver } = require('api/v0.3');
const { Subject, interval, merge } = require('rxjs');
const { timeInterval, filter, distinctUntilChanged, map } = require('rxjs/operators');
const START_EVENT = 'RUN';
const END_EVENT = 'END';
const events$ = new Subject();
const result$ =
const { rxObserver } = require('api/v0.3');
const { Subject, interval, merge } = require('rxjs');
const { timeInterval, filter, distinctUntilChanged, map , pairwise } = require('rxjs/operators');
const START_EVENT = 'RUN';
const END_EVENT = 'END';
const events$ = new Subject();
const result$ =
@kosich
kosich / index.js
Last active March 28, 2019 21:20
Pausable Observable using switchMap
const { rxObserver, palette } = require('api/v0.3');
const { timer, Subject, from, EMPTY } = require('rxjs');
const { switchMap, take, flatMap, zip, startWith, distinctUntilChanged, map, skip } = require('rxjs/operators');
// stream for coloring
const palette$ = from(palette);
const source$ = timer(0, 10).pipe(
take(10),
// get color for each item