Javascript Node.js和Socket.io-Dynamic Socket.on()
我做了一些东西来缩小我的socket.on()代码 在此上下文中,我已经使用Javascript Node.js和Socket.io-Dynamic Socket.on(),javascript,node.js,events,socket.io,Javascript,Node.js,Events,Socket.io,我做了一些东西来缩小我的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.
...
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函数似乎始终是call。
当event1使用args1触发时,callbackN使用args1调用;当event2使用args2触发时,callbackN使用args2调用
怎么了?这应该可以:
var events = {
event1: 'callback1',
event2: 'callback2',
...
eventN: 'callbackN'
};
var setCB = function(ev) {
var callback = events[ev];
socket.on(event, function() {
this[callback].apply(this, arguments);
});
};
for (var event in events) {
setCB(event);
}
你所看到的怪异或非直觉行为可以很好地解释这一点
希望有帮助。这
指的是什么?这指的是类范围,所有这些代码都在同一个类/命名空间中运行。