Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const Emit = () => {
- let listeners = {}
- const on = (eventName, listenerCb) => {
- if(listeners.hasOwnProperty(eventName)) {
- console.error('Already exist')
- return
- }
- if(typeof eventName !== 'string') {
- console.error('Event name must be a string!')
- return
- }
- if(typeof listenerCb !== 'function') {
- console.error('Callback must be a function!')
- return
- }
- listeners[eventName] = listenerCb
- }
- const off = (eventName) => {
- if(listeners.hasOwnProperty(eventName))
- delete listeners[eventName]
- }
- const emit = (eventName) => {
- if(!listeners.hasOwnProperty(eventName)) {
- console.log(`${eventName} is not registered!`)
- return
- }
- listeners[eventName]()
- }
- const getListener = (eventName) => {
- if(listeners.hasOwnProperty(eventName)) {
- return listeners[eventName]
- } else { return false }
- }
- return {
- on, off, emit, getListener
- }
- }
- const myEmitter = Emit()
- myEmitter.on('click', () => { console.log('======== im fired ========') })
- myEmitter.on('scroll', () => { console.log('scrolled') })
- let myInterval = setInterval(() => {
- if(myEmitter.getListener('scroll')) {
- myEmitter.emit('scroll')
- } else {
- console.log('scroll STOP')
- clearInterval(myInterval)
- }
- }, 200)
- setTimeout(() => {
- myEmitter.emit('click')
- myEmitter.off('click')
- }, 2000)
- setTimeout(() => {
- myEmitter.emit('click')
- myEmitter.off('scroll')
- }, 4000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement