Home Reference Source Repository

Function

Static Public Summary
public

Combines latest values of two or more streams, and returns new stream of an array filled with these values.

public

debounce(SubjectConstructor: Subject | BehaviorSubject | ReplaySubject, stream$: Subject | BehaviorSubject | ReplaySubject, conditionStreamGenerator: function(value: T): Subject): Subject | BehaviorSubject | ReplaySubject

Debounce delays values emitted by the source stream, and drops previous pending delayed emissions if a new value arrives on source stream.

public

filter(SubjectConstructor: Subject | BehaviorSubject | ReplaySubject, stream$: Subject | BehaviorSubject | ReplaySubject, conditionCallback: function(value: T): boolean): Subject | BehaviorSubject | ReplaySubject

Filters one stream and returns another with only filtered values.

public

Merges two or more streams into one.

Static Public

public combineLatest(SubjectConstructor: Subject | BehaviorSubject | ReplaySubject, subjectList: Array): Subject | BehaviorSubject | ReplaySubject source

import {combineLatest} from 'rxstream/src/operators/combineLatest.js'

Combines latest values of two or more streams, and returns new stream of an array filled with these values. It will start emit latest values only when all streams has received at least one value.

Params:

NameTypeAttributeDescription
SubjectConstructor Subject | BehaviorSubject | ReplaySubject

Pass a constructor of result stream of an array with latest values

subjectList Array

An array of subjects/streams latest values of which needs to be collected

Example:

import { Subject, combineLatest } from 'rxstream';

let letters$ = new Subject();
let numbers$ = new Subject();
let latest$ = combineLatest(Subject, [letters$, numbers$]);

latest$.subscribe(latest => console.log(latest));

letters$.next('a'); // no output, as numbers$ not yet received any value
numbers$.next(1);   // ['a', 1]
letters$.next('b'); // ['b', 1]
numbers$.next(2);   // ['b', 2]
numbers$.next(3);   // ['b', 3]
numbers$.next(4);   // ['b', 4]
letters$.next('c'); // ['c', 4]
letters$.next('d'); // ['d', 4]

public debounce(SubjectConstructor: Subject | BehaviorSubject | ReplaySubject, stream$: Subject | BehaviorSubject | ReplaySubject, conditionStreamGenerator: function(value: T): Subject): Subject | BehaviorSubject | ReplaySubject source

import {debounce} from 'rxstream/src/operators/debounce.js'

Debounce delays values emitted by the source stream, and drops previous pending delayed emissions if a new value arrives on source stream.

Params:

NameTypeAttributeDescription
SubjectConstructor Subject | BehaviorSubject | ReplaySubject

Pass a constructor of result/filtered stream

stream$ Subject | BehaviorSubject | ReplaySubject

Stream to be debounced

conditionStreamGenerator function(value: T): Subject

a function that should return a stream, when new value arrives on that stream, debounced stream emits latest value from the source stream

Example:

import { Subject, debounce } from 'rxstream';

let clicks$ = new Subject();
let debounced$ = debounce(Subject, clicks$, () => {
 let timer$ = new Subject();

 setInterval(() => timer$.next(), 1000);

 return timer$;
});

document.addEventListener('click', (event) => {
 clicks$.next(new Date());
});

debounced$.subscribe((event) => console.log(event));

public filter(SubjectConstructor: Subject | BehaviorSubject | ReplaySubject, stream$: Subject | BehaviorSubject | ReplaySubject, conditionCallback: function(value: T): boolean): Subject | BehaviorSubject | ReplaySubject source

import {filter} from 'rxstream/src/operators/filter.js'

Filters one stream and returns another with only filtered values.

Params:

NameTypeAttributeDescription
SubjectConstructor Subject | BehaviorSubject | ReplaySubject

Pass a constructor of result/filtered stream

stream$ Subject | BehaviorSubject | ReplaySubject

Stream to be filtered

conditionCallback function(value: T): boolean

Predicate function, to test each element of the stream. Return true to keep the element, false otherwise

Example:

import { Subject, filter } from 'rxstream';

let numbers$ = new Subject();
let evenNumbers$ = filter(Subject, numbers$, (num) => num % 2 === 0);

evenNumbers$.subscribe(num => console.log(num));

numbers$.next(1);
numbers$.next(2);
numbers$.next(3);
numbers$.next(4);

// Output is going to be: 2, 4

public merge(SubjectConstructor: Subject | BehaviorSubject | ReplaySubject, subjectList: Array): Subject | BehaviorSubject | ReplaySubject source

import {merge} from 'rxstream/src/operators/merge.js'

Merges two or more streams into one.

Params:

NameTypeAttributeDescription
SubjectConstructor Subject | BehaviorSubject | ReplaySubject

Pass a constructor of result/merged stream

subjectList Array

An array of subjects/streams to be merged

Example:

import { Subject, BehaviorSubject, merge } from 'rxstream';

let first$ = new BehaviorSubject();
let second$ = new Subject();
let merged$ = merge(Subject, [first$, second$])

first$.next(1);

merged$.subscribe(value => console.log(value));
first$.next(2);
second$.next(3);
second$.next(4);

// Output is going to be: 2, 3, 4.
// Notice that despite the fact that merged stream has BehaviorSubject
// we are getting in output only 2, 3 and 4 but not 1. This is because we specified
// that our result stream should be of type Subject, which does not remember
// previous values.