繁体   English   中英

如何使用Node.js在外部范围内定义回调函数?

[英]How do I define a callback function in an outer scope using Node.js?

我有以下代码:

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
                         }

                };
    }

}

为了使我的代码更易于阅读,我想使setUsernameCallback函数定义在外部范围或另一个JS文件中,如下所示:

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传递给功能,以便可以访问

socket.on('setUsername',setUsernameCallback(socket));//event received

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM