UNPKG

ks3

Version:

本代码库为`金山云存储KS3`服务.主要提供`KS3 nodejs SDK`和`命令行工具`.

52 lines (41 loc) 1.35 kB
function createEventDispatcer (client) { var eventObject = {} var callbackId = 0 client.on = function (eventName, callback) { if (!eventObject[eventName]) { eventObject[eventName] = {} } const id = '' + callbackId++ eventObject[eventName][id] = callback return id } client.once = function (eventName, callback) { if (!eventObject[eventName]) { eventObject[eventName] = {} } const id = 'once_' + callbackId++ eventObject[eventName][id] = callback return id } client.emit = function (eventName, ...args) { const callbackList = eventObject[eventName] for (let id in callbackList) { callbackList[id](...args) // 如果是订阅一次的 则需要删除 if(id.indexOf('once') > -1) { delete callbackList[id] } } } client.off = function (eventName, id) { delete eventObject[eventName][id] // 如果是当前eventName里面的最后一个订阅者 则需要将eventName删除 if (!Object.keys(eventObject[eventName]).length) { delete eventObject[eventName] } } } var EventDispatcer = function () { createEventDispatcer(this) } module.exports = EventDispatcer