我搜索了这个(简单?)问题的答案,然而,我找不到任何清楚的答案。
我是一个试图适应网络市场的java开发者,但是,作为一个OOP,很多东西都让我感到厌烦。
io.sockets.on('connection', function (socket) {
console.log("Client has connected! id = [" + socket.id + "]");
socket.on('disconnect', onPlayerDisconnected(socket));
});
function onPlayerDisconnected(socket) {
socket.broadcast.emit('player_disconnected', socket.id);
console.log("Client has disconnected! id = [" + socket.id + "]");
}
这是堆栈跟踪:
events.js:219
throw new TypeError('"listener" argument must be a function');
^
TypeError: "listener" argument must be a function
如果我使用匿名功能,它就像一个魅力。问题是,如果我对(增加的)事件数做出反应,代码将无法维持。
那么,有没有办法将代码分解为更小的函数?
奖金问题:事件是否可以将代码拆分为多个.js文件?
非常感谢,
node.js初学者。
答案 0 :(得分:3)
您正在将onPlayerDisconnected
函数的结果(看似undefined
,因为没有返回任何内容)传递给socket.on('disconnect')
处理程序而不是实际函数{{1}这就是它正在寻找的东西。
更改传递onPlayerDisconnected
onPlayerDisconnected(socket)
此代码只传递实际函数socket.on('disconnect', onPlayerDisconnected(socket));
onPlayerDisconnected