javascript - 分解 JS 函数
问题描述
我正在尝试简化我的代码并将其分解为多个文件。例如,我设法做到了:
socket.once("disconnect", disconnectSocket);
然后有一个单独的函数调用disconnectSocket
它可以访问socket
对象如下:
const disconnectSocket = socket => {
....
};
我正在尝试用这种模式做类似的事情:
socket.on(EVENT_NAME, params => {
...
});
相反,我可以在哪里做:
socket.on(EVENT_NAME, myFunc);
const myFunc = (socket, params) => {
...
}
但这是失败的说法params is undefined
。我究竟做错了什么?
解决方案
您可以实现这一点,但您的函数签名不正确。处理程序将只接受一个参数。请注意,一些内置事件,例如reconnect_failed
不传递任何参数。
将您的签名更改为:
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);
});
推荐阅读
- react-native - 如何在 iOS 中安装 React Native Expo 应用程序?
- jquery - 我必须单击 Jquery 提交按钮两次
- android-studio - Gradle 在 Windows 上找不到 git.exe
- gitlab - 在每个作业之前运行的 gitlab ci 中的脚本?
- regex - 正则表达式
- sql - 是否可以在 postgres 中将 WITH 子句别名作为函数参数传递?
- javascript - 如何通过javascript在输入html中设置最小值?
- assembly - 将任何内容推送到堆栈时出现分段错误
- python - 如何使用 Jupyter 在 1 个笔记本中导入 2-3 个笔记本
- python - 无法使用 Python 检测文本文件中的行