我在将以下代码块重构为单独的函数时遇到了问题。使用箭头函数重构嵌套函数
socketHandler = (io) => {
io.on('connection', (socket) => {
socket.on('doLogin', data => {
userService.getUserByName(data.uname)
.then((doc) =>{
if(doc && doc.pwd===data.pwd){
socket.emit('onLogin', {status:'SUCCESS'});
}
}, (error) => {
socket.emit('onLogin', {status:'Error in the application'});
});
});
});
}
app.configure(socketio(socketHandler));
我试着重构上面的代码,如下所示。
doLogin = data => {
userService.getUserByName(data.uname)
.then((doc) =>{
if(doc && doc.pwd===data.pwd){
socket.emit('onLogin', {status:'SUCCESS'});
}
}, (error) => {
socket.emit('onLogin', {status:'Error in the application'});
});
}
socketHandler = (io) => {
io.on('connection', (socket) => {
socket.on('doLogin', doLogin);
});
}
app.configure(socketio(socketHandler));
我得到一个运行时错误,因为没有定义套接字。
如何在函数'doLogin'中引用'套接字'?
我也尝试了以下方法,无法使其工作。
doLogin = socket => data => {
也试过如下
socket.on('doLogin', doLogin.bind(socket));
需要一些帮助解决这个。
谢谢。