Created
December 13, 2016 23:43
-
-
Save awerlang/6c7c13ed025f0b8ebc908b1c8ee9ee8d to your computer and use it in GitHub Desktop.
sample event emitter / observable
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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