有没有办法在Node.js中“吃”事件?

时间:2016-03-14 01:04:19

标签: javascript node.js events

有没有办法“吃掉”其他听众?

x.on("test", function(x){
    if(x==4) {
        console.log("Event1");
    }
});
x.on("test", function(x){
    if(x==5) {
        console.log("Event2");
    }
});
x.on("test", function(x){
    console.log("Event3");
});
x.emit("test", 4);
x.emit("test", 5);
x.emit("test", -1);

如果x为4,有没有办法让事件1“吃掉”(不允许它发生)其他事件?

如果没有将if(x!= 4&& x!= 5)添加到事件3(如果有很多听众,它可能会很快烦恼)。

奖励:我是否可以举行“后备”活动来捕捉没有任何听众的活动。

2 个答案:

答案 0 :(得分:1)

EventEmitter内置节点不支持" eat"其他事件处理程序或有一个" catch-all"事件处理程序如果您需要这种功能,则必须在npm上使用其他EventEmitter实现之一。

答案 1 :(得分:0)

你可以试试这个

    x.on("test", function(x){

        switch(x){
            case 4:         
                console.log("Event1");
                break;
            case 5:
                console.log("Event2");
                break;
            default:
                console.log("Event3");

        }

    });
    x.emit("test", 4);
    x.emit("test", 5);
    x.emit("test", -1);