Skip to content

Instantly share code, notes, and snippets.

@awerlang
Created December 13, 2016 23:43
Show Gist options
  • Save awerlang/6c7c13ed025f0b8ebc908b1c8ee9ee8d to your computer and use it in GitHub Desktop.
Save awerlang/6c7c13ed025f0b8ebc908b1c8ee9ee8d to your computer and use it in GitHub Desktop.
sample event emitter / observable
require('symbol-observable')
var $$observable = Symbol.observable
var rxjs = require("rxjs")
var Observable = rxjs.Observable
var Subject = rxjs.Subject
var o = new Subject()
var EventEmitter = class {
next(item) {
if (typeof this.observer === 'function') {
this.observer(item)
} else if (typeof this.observer.next === 'function') {
this.observer.next(item)
}
}
emit(item) {
this.next(item)
}
subscribe(observerOrNext) {
this.observer = observerOrNext
}
constructor() {
this[$$observable] = function () {
return this
}
}
}
var u = new EventEmitter();
o.takeUntil(u).subscribe(item => {
console.log(item)
})
o.next(1)
o.next(2)
u.emit('stop')
o.next(3)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment