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 April 12, 2019 21:51
mergeMap vs exhaustMap vs switchMap vs concatMap
const { rxObserver, palette } = require('api/v0.3');
const { from, timer, pipe } = require('rxjs');
const { zip, take, map, mergeMap, switchMap, concatMap, exhaustMap, tap, delayWhen } = require('rxjs/operators');
// our source$ will emit values at 5ms, 10ms, 20ms
const source$ = fromDelayed([ 5, 10, 20 ]).pipe(
zip(from(palette), Marble) // colorize each item
);
@kosich
kosich / index.js
Created March 29, 2019 09:50
Retry only given number of times
const { rxObserver } = require('api/v0.3');
const { timer, throwError, of, NEVER } = require('rxjs');
const { tap, switchMap, concat, retryWhen, take, delay } = require('rxjs/operators');
timer(5).pipe(
switchMap(value => {
if (Date.now() < 35) {
return throwError('Too early!');
}
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$ =
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$ =
@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...
@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 => {
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
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 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
Last active April 26, 2019 10:27
debounceTime vs throttleTime vs auditTime vs sampleTime
const { rxObserver, palette } = require('api/v0.3');
const { merge, timer, from, NEVER } = require('rxjs');
const { map, take, zip, auditTime, throttleTime, debounceTime, sampleTime, share, concat } = require('rxjs/operators');
// stream for coloring
const palette$ = from(palette);
const source$ = merge(
timer(0, 330),
timer(50, 180)