Javascript socket.io-从匿名函数中发出

Javascript socket.io-从匿名函数中发出,javascript,node.js,asynchronous,redis,socket.io,Javascript,Node.js,Asynchronous,Redis,Socket.io,我对异步的世界很陌生。在使用任何库之前,我首先尝试使用回调来完成所有工作。我想我有一个关闭的问题,但不知道该怎么办 下面是一些代码: namespace.on('connection', function(socket){ var newClient = socket.id//just in case the a new user logged on between declaration and use socket.join('room1') function new

我对异步的世界很陌生。在使用任何库之前,我首先尝试使用回调来完成所有工作。我想我有一个关闭的问题,但不知道该怎么办

下面是一些代码:

namespace.on('connection', function(socket){
    var newClient = socket.id//just in case the a new user logged on between declaration and use
    socket.join('room1')
    function newConnection(positionCallback, hashCallback, newUser){
        namespace.to(socket.id).emit('hello', {yo:'works'})
        for(var i=0; i< cardCounter ;i++){
            var keyVal = 'card:'+ cardArray[i]
            redis.hgetall(keyVal, function (err, storedMsg) {
                    namespace.to(socket.id).emit('hello', {yo:'doesnt work'})
                    hashCallback(storedMsg, newUser)
                });
            if(i==cardCounter-1){
                positionCallback()
            }
        }
    }

    function onConnectionComplete(){
        namespace.to(socket.id).emit('hello', {yo:'works'})
    }

    function onHashComplete(hashObject, newUser){
        namespace.to(newUser).emit('hello', {yo:'doesnt work'})
    }

    newConnection(onConnectionComplete, onHashComplete, newClient)
}
namespace.on('connection',函数(socket){
var newClient=socket.id//,以防新用户在声明和使用之间登录
socket.join('room1')
函数newConnection(positionCallback、hashCallback、newUser){
namespace.to(socket.id).emit('hello',{yo:'works'})
对于(变量i=0;i
我在周围放置了一些socketio发射装置,以确定哪里出了问题

在调用redis的外部发出的任何消息都会按预期工作。只要我进入匿名函数-nada

也就是说,我让console.log()处理了该函数中的所有内容。我从redis获得了正确的结果,我有了正确的用户,并且定义了名称空间

我就是发不出结果

我本以为匿名函数可以访问它之外的作用域,但不是相反。我看不出有什么东西不能让它通过


我也知道有些人不喜欢if语句调用回调,但这可能是另一天的讨论。

这是一个关闭问题!只是不是我所期望的

我也不太明白

回调不是问题,在redis响应函数中获取可访问的变量才是问题所在。我原以为父/祖先函数中声明的任何变量都可用于子/死者函数

在这个例子中,我需要在循环中创建一个函数,并显式地传递变量,使其在闭包中可用

以下是stackoverflow问题,它为我指明了正确的方向: