Boy*_*ang 3 javascript sockets websocket socket.io
对于socket.on("someChannel",handler),我希望将我的处理函数提取到另一个文件中.因此,它们需要在套接字obj中传递,还有一些额外的信息.
喜欢:
socket.on("myEvt", myEvtHandler);
myEvtHandler(socket, additionalInfo, data) {//some stuff here}
Run Code Online (Sandbox Code Playgroud)
但我不能.我能想到的最好的就是关闭:
(function(socket, addtionalInfo) {
socket.on("myEvt", function(data) {
myEvtHandler(socket, addtionalInfo, data);
});
})(socket, addtionalInfo);
Run Code Online (Sandbox Code Playgroud)
它是否正确?还有更好的方法吗?
您可以使用bind以下命令创建部分函数:
socket.on("myEvt", myEvtHandler.bind(null, socket, additionalInfo));
Run Code Online (Sandbox Code Playgroud)
该bind()会返回一个函数已经"填入"前两个参数.传递给bind()(null在这种情况下)的第一个参数将是this您的处理程序中的对象(更多信息).
传递socket.io给处理程序的任何其他参数将从第三个参数开始提供:
function myEvtHandler(socket, additionalInfo, data) { ... }
Run Code Online (Sandbox Code Playgroud)
同样,这会(几乎)相同:
socket.on("myEvt", function(data) {
myEvtHandler(socket, additionalInfo, data);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2718 次 |
| 最近记录: |