Javascript 分解JS函数
我试图简化我的代码并将其分解为多个文件。例如,我设法做到了:Javascript 分解JS函数,javascript,node.js,express,sockets,socket.io,Javascript,Node.js,Express,Sockets,Socket.io,我试图简化我的代码并将其分解为多个文件。例如,我设法做到了: socket.once("disconnect", disconnectSocket); 然后有一个名为disconnectSocket的单独函数,它可以访问socket对象,如下所示: const disconnectSocket = socket => { .... }; 我正试图用这种模式做一些类似的事情: socket.on(EVENT_NAME, params => { ... }); 我可以做的
socket.once("disconnect", disconnectSocket);
然后有一个名为disconnectSocket
的单独函数,它可以访问socket
对象,如下所示:
const disconnectSocket = socket => {
....
};
我正试图用这种模式做一些类似的事情:
socket.on(EVENT_NAME, params => {
...
});
我可以做的是:
socket.on(EVENT_NAME, myFunc);
const myFunc = (socket, params) => {
...
}
但这是失败的,并且说
参数未定义
。我做错了什么?您可以实现这一点,但您的函数签名不正确。处理程序将只接受一个参数。请注意,一些类似的重新连接\u失败
不会传递任何参数
将您的签名更改为:
socket.on(EVENT_NAME, myFunc);
const myFunc = (message) => {
...
}
如果要访问套接字,请执行以下操作:
socket.on(EVENT_NAME, (message) => myFunc(socket, message));
const myFunc = (socket, message) => {
...
}
我使用的正是这种模式:
socket.on(constants.events.game.deployUnit, (message) => {
deployUnit(socket, message);
});
socket.on(constants.events.game.skipOpponent, (message) => {
skipOpponent(socket, message);
});
socket.on(constants.events.game.logDefenderKill, (message) => {
logDefenderKill(socket, message);
});
在您的工作示例中,回调函数接受1个参数(
params
),为什么您认为该函数现在接受上一个代码段中的2个参数?我想我误解了-因为在第一个使用disconnectSocket的示例中,我可以通过将套接字作为funclet的第一个参数来传递套接字,让我重新措辞,如何访问myFunc
内的socket
和params
?我是否也能够访问myFunc
内的socket
?我需要这个来拉出socketID等-我可以做一些类似于socket.on(EVENT_NAME,myFunc(socket,params))的事情吗然后有这个签名constmyfunc=(套接字,参数)
?