UNPKG

react-native-blob-util

Version:

A module provides upload, download, and files access API. Supports file stream read/write for process large files.

79 lines (67 loc) 2.11 kB
// Copyright 2016 wkh237@github. All rights reserved. // Use of this source code is governed by a MIT-style license that can be // found in the LICENSE file. import Log from '../utils/log.js'; const log = new Log('EventTarget'); log.disable(); export default class EventTarget { listeners: any; constructor() { log.info('constructor called'); this.listeners = {}; } /** * Add an event listener to given event type * @param {string} type Event type string * @param {(Event) => void} cb Event handler function */ addEventListener(type: string, cb: () => void) { log.info('add event listener', type, cb); if (!(type in this.listeners)) { this.listeners[type] = []; } this.listeners[type].push(cb); } /** * Remove an event listener * @param {string} type Type of the event listener * @param {()=>void} cb Event listener function. * @return {[type]} [description] */ removeEventListener(type: string, cb: () => void) { log.info('remove event listener', type, cb); if (!(type in this.listeners)) return; let handlers = this.listeners[type]; for (let i in handlers) { if (cb === handlers[i]) { handlers.splice(i, 1); return this.removeEventListener(type, cb); } } } /** * Dispatch an event * @param {string} type Event type. * @param {Event} event Event data payload. */ dispatchEvent(type: string, event: Event) { log.info('dispatch event', event); if (!(type in this.listeners)) return; let handlers = this.listeners[type]; for (let i in handlers) { handlers[i].call(this, event); } } /** * Remove all registered listeners from this object. * @nonstandard * @return {[type]} [description] */ clearEventListeners() { for (let i in this.listeners) { delete this.listeners[i]; } } }