2019-10-26

···
import React from '@react';
// var { subscribers } = React.getApp().globalData ;

function Event(eventName, callback) {
this.eventName = eventName;
this.callback = callback;
}

Event.prototype.removeListener = function() {
var { subscribers } = React.getApp().globalData ;
var index = subscribers.indexOf(this);
if (index != -1) {
subscribers.splice(index, 1);
}
};

var EventEmitter = {

addListener: function(eventName, callback) {
    var event = new Event(eventName, callback);
    var { subscribers } = React.getApp().globalData ; 
    subscribers.push(event);
    return event;
},
removeListener: function(event) {       //event 类型: string || Event || Array
    var { subscribers } = React.getApp().globalData ; 
    var rm = function(e) {
        var index = subscribers.indexOf(e);
        if (index != -1) {
            subscribers.splice(index, 1);
        }
    };

    if (typeof event == 'string') {
        subscribers.forEach(function(e,idx) {
            if (e.eventName == event) {
                subscribers.splice(idx, 1);
            }
        });
    } else if (event instanceof Event) {
        rm(event);
    } else if (event instanceof Array) {
        event.forEach(function(e) {
            EventEmitter.removeListener(e);
        });
    }
},
dispatch: function(eventName, param) {
    var { subscribers } = React.getApp().globalData ; 
    subscribers.forEach(function(event) {
        if (event.eventName === eventName) {
            event.callback && event.callback(param);
        }
    });
},
lookFunc: function(eventName) {
    let funcArr = [];
    var { subscribers } = React.getApp().globalData ; 
    subscribers.forEach(function(event) {
        if (event.eventName === eventName) {
            // event.callback && event.callback(param);
            funcArr.push(event.callback.toString());
        }
    });
    return funcArr;
}

};

export default EventEmitter;
···

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容