关于优化和DRY的快速问题。我有我的节点服务器,一切正常,但我想知道如何清理未来的开发人员。我有一组事件被分配如下:
var debug = true;
io.sockets.on('connection', function (socket) {
console.log('User connected!');
socket.on('event-one', function (data) {
if(debug) { console.log('Event 1!'); }
socket.broadcast.emit('event-one', data);
});
socket.on('event-two', function (data) {
if(debug) { console.log('Event 2!'); }
socket.broadcast.emit('event-two', data);
});
socket.on('event-three', function (data) {
if(debug) { console.log('Event 3!'); }
socket.broadcast.emit('event-three', data);
});
});
正如您所看到的,我正在重复socket.on()方法。有没有更有效的方式来写这个?我尝试了一个带有for循环的简单数组,但事件停止了。
任何输入都将不胜感激。 感谢。
答案 0 :(得分:0)
不确定为什么你的循环不起作用,这很好用:
var debug = true;
var events = [ 'event-one', 'event-two', 'event-three' ];
io.sockets.on('connection', function (socket) {
events.forEach(function(ev) {
socket.on(ev, function(data) {
if (debug) {
console.log('got event:', ev);
}
socket.broadcast.emit(ev, data);
});
});
});