Skip to content

Instantly share code, notes, and snippets.

@swazza
Created May 11, 2017 01:39
Show Gist options
  • Save swazza/961f51e0382e1f24f6643059bf931732 to your computer and use it in GitHub Desktop.
Save swazza/961f51e0382e1f24f6643059bf931732 to your computer and use it in GitHub Desktop.
Generators as Observables
function observable(observer) {
for(var i = 0; i <= 10; i++) {
observer.next(i)
}
observer.error()
observer.complete()
}
const observer = {
next(value) { console.log(`next -> ${value}`) },
error(err) { console.log('error') },
complete() { console.log('completed') }
}
observable(createObserver(observerGenerator()))
// observable(observer)
function createObserver(iterator) {
return {
next(value) { iterator.next(value) },
error(err) { iterator.throw(err) },
complete() { iterator.return() }
}
}
function* observerGenerator() {
try {
while(true) {
let value = yield
console.log(`next -> ${value}`)
}
} catch (err) {
console.log('error')
}
console.log('completed')
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment