我在將以下代碼塊重構爲單獨的函數時遇到了問題。使用箭頭函數重構嵌套函數
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));
需要一些幫助解決這個。
謝謝。