Last active
October 16, 2020 11:08
-
-
Save LironHazan/90c63f0c072c499449931035c940721b to your computer and use it in GitHub Desktop.
Igor Paevshik snippet for rxjs post
This file contains hidden or 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 { Observable, from} from 'rxjs'; | |
import { tap } from 'rxjs/operators'; | |
//Similar to native JS 'some' method, | |
//if at least one value pass predicate emit true, else false | |
function some(predicate: Function) { | |
return function <T>(source: Observable<T>):Observable<Boolean>{ | |
return new Observable(subscriber => { | |
return source.subscribe({ | |
next(value) { | |
if (predicate.call(null,value)) { | |
subscriber.next(true); | |
subscriber.complete(); | |
} | |
}, | |
error(error) { | |
subscriber.error(error); | |
}, | |
complete() { | |
subscriber.next(false); | |
subscriber.complete(); | |
} | |
}); | |
}); | |
} | |
} | |
interface User { | |
name: string, | |
age: number | |
} | |
const users = from([{name: 'John', age: 29}, {name: 'Mike', age:26}]); | |
users.pipe( | |
some((user: User) => user.name === 'Mike') | |
).subscribe(value => console.log(value)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment