Last active
November 13, 2015 08:55
-
-
Save tetsuharuohzeki/3e40f6ea435406cad950 to your computer and use it in GitHub Desktop.
filter map function for Rx.Observable.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import {Option} from 'option-t'; | |
import {Observable} from 'rx'; | |
type FilterMapFn<T, U> = (v: T) => Option<U>; | |
function filterMapForObservable<T, U>(source: Observable<T>, op: FilterMapFn<T, U>): Observable<U> { | |
const filtered = source.flatMap(function(v: T): Observable<U> { | |
const mapped: Option<U> = op(v); | |
const result: Observable<U> = | |
mapped.mapOrElse(function def(): Observable<U> { | |
return Observable.never<U>(); | |
}, function map(v: U): Observable<U> { | |
return Observable.return<U>(v); | |
}); | |
return result; | |
}); | |
return filtered; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment