Javascript 如何使用Node.js在外部作用域中定义回调函数?
我有以下代码:Javascript 如何使用Node.js在外部作用域中定义回调函数?,javascript,node.js,callback,Javascript,Node.js,Callback,我有以下代码: for (i in namespaces) { namespaces[i].on('connection',handleConnection(namespaces[i])); function handleConnection(ns) { return function (socket){//connection socket.on('setUsername',setUsernameCal
for (i in namespaces)
{
namespaces[i].on('connection',handleConnection(namespaces[i]));
function handleConnection(ns)
{
return function (socket){//connection
socket.on('setUsername',setUsernameCallback);//event received
function setUsernameCallback(userN){//I want to move this
socket.username = userN;
//some code
}
};
}
}
为了使我的代码更易于阅读,我想在外部作用域或另一个JS文件中定义setUsernameCallback
函数,如下所示:
for (i in namespaces)
{
namespaces[i].on('connection',handleConnection(namespaces[i]));
function handleConnection(ns)
{
return function (socket){//connection
socket.on('setUsername',setUsernameCallback);//event received
};
}
}
function setUsernameCallback(userN){
socket.username = userN;
//some code
}
实际上,这是行不通的。我尝试了不同的方法来传递参数,但仍然得到了未定义的套接字,您可以像下面一样定义它
var setUsernameCallback = function(socket){
return function(userN){
socket.username = userN;
//some code
}
}
并将插座
传递到功能,以便访问
socket.on('setUsername',setUsernameCallback(socket));//event received
如果给匿名函数起一个名字,会有什么好处?我不知道有什么好处。