Skip to content

Instantly share code, notes, and snippets.

@LironHazan
Last active October 16, 2020 11:08
Show Gist options
  • Save LironHazan/90c63f0c072c499449931035c940721b to your computer and use it in GitHub Desktop.
Save LironHazan/90c63f0c072c499449931035c940721b to your computer and use it in GitHub Desktop.
Igor Paevshik snippet for rxjs post
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