Я сделал некоторые вещи, чтобы сжать мой код socket.on().Node.js и Socket.io - Dynamic socket.on()
В этом контексте я уже получаю сокет клиента с
...
var io = require('socket.io').listen(...);
io.sockets.on('connection', function(socket) {
// my code for this client
...
});
Прежде чем я имел этот
socket.on('event1', function(args1) {callback1(args1);});
socket.on('event2', function(args2) {callback2(args2);});
...
socket.on('eventN', function(argsN) {callbackN(argsN);});
Теперь у меня есть
var events = {
event1: 'callback1',
event2: 'callback2',
...
eventN: 'callbackN'
};
for(var event in events) {
var callback = events[event];
socket.on(event, function() {
this[callback].apply(this, arguments);
});
}
Оказывается, что функция callbackN является всегда звоните. Когда event1 является триггером с args1, callbackN является вызовом с args1, когда event2 является триггером с args2, callbackN - это вызов с args2.
Что не так?
Что 'this'refer к? – warchimede
'this' ссылаются на класс, весь этот код работает в том же классе/пространстве имен. – Typhon