处理未经检查的IPC消息

时间:2015-04-27 21:13:45

标签: node.js

我正在使用ZMQ(ZeroMQ)进行IPC -

如果我能收到消息,我想处理该消息,将其路由到所需的处理函数,可以是名为 one two的函数(或three)。

var messageHandler = {

one: function(msg){},
two: function(msg){}

}

现在,我知道有两种方法可以做到这一点:

我可以像这样输入一堆 case 语句:

reply.on('message',function(msg){

  switch(msg){
    case 'one':
     messageHandler.one(msg);
     break;
    case 'two':
     messageHandler.two(msg);
    break; 
    default:
     ///
    }
}

或者我可以使用更多像这样的速记方法:

reply.on('message',function(msg){

  if(typeof messageHandler[msg]=='function'){
                messageHandler[msg](msg);
            } else{
                throw new Error('no handler error');
        }

}

是否有充分的理由使用一个而不是另一个?

1 个答案:

答案 0 :(得分:1)

似乎很清楚,最好的方法是第二种方式:

 if(typeof messageHandler[msg]=='function'){
                messageHandler[msg](msg);
            } else{
                throw new Error('no handler error');
        }

原因是:

  1. 较小的代码库
  2. 程序匹配输入(' msg' var)和输出(匹配非匹配函数名称) 先发制人,无需维护案例陈述。