Observable
by Artem
Babel + JSX
'use strict';
class Observable {
constructor(subscriberFn) {
this.sub = subscriberFn;
}
static create(observerFn) {
return new Observable(observerFn);
}
static of (value) {
return Observable.create((observer) => {
observer.next(value);
});
}
map(mapFn) {
const that = this;
return Observable.create((observer) => {
that.subscribe({
next(v) {
const newValue = mapFn(v);
observer.next(newValue);
}
})
});
}
subscribe(observer) {
this.sub(observer);
}
}
Observable.of('Hello world')
.map((v) => v.toUpperCase())
.subscribe({
next(v) {
console.log(v);
}
});