0.1.2 • Published 8 years ago

fobs v0.1.2

Weekly downloads
5
License
MIT
Repository
github
Last release
8 years ago

type Observer = (next:Next, error: Error, complete: Complete) => Subscription; type Subscription = () => void; type Next = (value:T) => void; type Error = (e:E) => void; type Complete = () => void;

Observable methods

declare interface Observable<T> {
    subscribe: Observer;

    map: <U>(fn:(x:T) => U) => Observable<U>;

    filter: (predicate:(x:T) => boolean) => Observable<T>;

    scan: <U>(fn:(x:U, y:T) => U, seed:U) => Observable<U>;

    flatMap: <U>(fn:(v:T) => Observable<U>) => Observable<U>;

    startWith: (v:T) => Observable<T>;

    merge: (s:Observable<T>) => Observable<T>;

    take: (n:number) => Observable<T>;

    combine: <U>(fn:(x:T, ...xs:Array<T>) => U, ...Os:Array<Observable<T>>) => Observable<U>;

    zip: <U>(fn:(x:T, ...xs:Array<T>) => U, ...Os:Array<Observable<T>>) => Observable<U>;

    multicast: () => Observable<T>;
}

factories

declare function create(observer:Observer):Observable;
declare function just<T>(v:T):Observable<T>;
declare function fromEvent<T>(el:HTMLElement, name:string):Observable<T>;
declare function fromPromise<T>(promise:Promise):Observable<T>;
declare function fromIterable(it:Iterable):Observable;
declare function interval<T>(t: number, v:T):Observable<T>;

Examples

const noop = () => {};
stream.create(sink => {
    sink(1);
    sink(2);
    sink(3);
    return noop;
}).map(x=>x)
    .flatMap(x => stream.just(1))
    .filter(x =>    x)
    .scan((x, y) => x + y, true)
    .subscribe(v=> console.log(v));

stream.just(1).merge(stream.just(2), stream.just(3), stream.just(4))
    .subscribe(v=> console.log(v));

stream.just(1).combine((a, b, c, d) => [a, b, c, d], stream.just(2), stream.just(3), stream.just(4))
    .subscribe(v=> console.log(v));

stream.just(1).zip((a, b, c) => [a, b, c], stream.just('2'), stream.just(3))
    .subscribe(v=> console.log(v));

stream.just(1).filter(x => x).subscribe(noop);
0.1.2

8 years ago

0.1.1

8 years ago

0.1.0

8 years ago