Socket.io的例子都遵循这种模式
io.sockets.on("connection",function(mySocket){ mySocket.on("my message",function(myData){ ... }); });
在我看来,这将为每个连接创建一个新的回调函数.假设每个套接字都以相同的方式响应消息,那么为所有套接字定义一次处理程序就不会有更高的内存效率,如下所示:
function myMessageHandler(data){ ... } io.sockets.on("connection",myMessageHandler); });
甚至这个:
io.sockets.on("my message",function(mySocket,myData){ ... });
如果是这样,为什么Socket.io会推荐一种浪费内存的做法?我们是否希望在“连接”回调的闭包内保留套接字的有状态变量?
解决方法
从另一个角度来看,第一种形式很容易阅读(因为省略了很多细节).我认为这种形式最能说明图书馆的运作方式.我相信,Node网站本身使用了类似的风格,原因相同.我认为这正是它们在那些地方使用的原因.
几分钟后阅读博客和讨论表明开发人员通常选择传递命名函数.虽然我确信它有性能提升,但主要动机无疑是可读性.我认为随着您的功能增长,您会发现第二种形式(或更多绘制形式)更易于使用.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。