美文网首页
nodejs 小工具之 event

nodejs 小工具之 event

作者: Mattle | 来源:发表于2018-04-16 12:02 被阅读0次

使用node做一些小工具,还是很方便的。今天我就来分享下 event 小工具(有效的避免Node的事件回掉)

function Event(){
    this.__listeners__ = [];
}

Event.prototype.addEvent = function(name, callback, tag){
    if(app.Utils.isNull(name)){
        console.error("current event name must not be null");
        return;
    }

    if(!app.Utils.isFunction(callback)){
        console.error("current event callback must be an instance of function");
        return;
    }

    if(this.__listeners__[name]){
        console.error("current event already exits");
        return;
    }

    tag = tag || "";
    this.__listeners__[name] = {callback, tag};

}

Event.prototype.dispatchEvent = function(event){
    let name = event.name;
    if(app.Utils.isNull(name)){
        console.error("current event name must not be null");
        return 
    }

    let target = this.__listeners__[name];
    if(app.Utils.isNull(target)){
        console.error("current event not exits");
        return 
    }
    
    event.tag = target["tag"];
    event.data = event.data || {};
    target['callback'](event);
}

Event.prototype.removeEventByName = function(name){

    if(this.__listeners__[name]){
        this.__listeners__[name] = null;
        delete this.__listeners__[name];
    }
    
}

Event.prototype.removeEventByTag = function(tag){

    if(app.Utils.isNull(tag)){
        console.error("currcert event tag must not be null ...");
        return;
    }
    for (const name in this.__listeners__) {
        if (this.__listeners__.hasOwnProperty(name)) {
            let tagname = this.__listeners__[name]["tag"];
            if(tagname === tag){
                this.removeEventByName(name);
            }            
        }
    }
}


module.exports = Event;

相关文章

  • nodejs 小工具之 event

    使用node做一些小工具,还是很方便的。今天我就来分享下 event 小工具(有效的避免Node的事件回掉)

  • 性能优化2.1笔记

    event-loop https://nodejs.org/en/docs/guides/event-loop-t...

  • Nodejs Event Loop

    Nodejs Event Loop 什么是Nodejs Node.js 是一个javascript runtime...

  • nodejs 的 Event Loop 和 EventEmitt

    nodejs 的 Event Loop nodejs 的单线程 nodejs 的单线程不是绝对的,在用户界面视图上...

  • iOS RunLoop由浅入深

    Event Loop Event Loop事件循环机制,如javascript的事件循环,以及依赖其的nodejs...

  • event loop

    精华结论 浏览器的 Event Loop 遵循的是 HTML5 标准,而 NodeJs 的 Event Loop ...

  • NodeJs event loop

    V8有个task queue,IO event,timeout,interval事件会往task queue放入c...

  • nodejs event loop

    1.线程的问题 2.各个方法优先级的问题 需要知道宏任务,微任务的概念。process.nextTick() 3....

  • nodejs Event Loop

    1.前置知识 node.js是一个可以运行js的平台包括fs模块、http模块以及JS引擎(v8) js引擎(单线...

  • Event Loop in Nodejs

    Event loop: https://blog.insiderattack.net/event-loop-and...

网友评论

      本文标题:nodejs 小工具之 event

      本文链接:https://www.haomeiwen.com/subject/xegskftx.html