gpt4 book ai didi

javascript - 使用箭头函数重构嵌套函数

转载 作者:行者123 更新时间:2023-12-01 03:18:14 24 4
gpt4 key购买 nike

我在将以下代码块重构为单独的函数时遇到了麻烦。

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”中获取对“socket”的引用?

我也尝试了以下方法,但无法实现。

doLogin = socket => data => {

还尝试如下

socket.on('doLogin', doLogin.bind(socket));

需要一些帮助来解决这个问题。

谢谢。

最佳答案

分解函数后,您失去了对 socket 对象的引用。你可以尝试,在 SocketHandler

socket.on('doLogin', (data) => doLogin(data, socket));

并将doLogin重新定义为

doLogin = (data, socket) => {

关于javascript - 使用箭头函数重构嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45391961/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com