25 Jun 2019
class Observable {
constructor(functionThatTakesObserver) {
this._functionThatTakesObserver = functionThatTakesObserver;
}
subscribe(observer) {
return this._functionThatTakesObserver(observer)
}
}
let myObservable = new Observable(observer => {
setTimeout(() => {
observer.next("Got data")
observer.complete()
}, 1000)
})
let myObserver = {
next(data) {
console.log(data);
},
error(e) {
console.log(e);
},
complete() {
console.log("Request complete")
}
}
myObservable.subscribe(myObserver)
// Output:
// (1 second) Got data
// (1 second) Request complete
Everything you can do with a Promise you can do an Observable. Everything you can do with an observable you can’t necessarily do with a Promise. An observable can call next()
multiple times, whereas a promise either resolves or rejects, it can’t emit multiple values.