等待Node.js中的事件

时间:2012-01-19 18:10:13

标签: node.js

我一直在玩Node.js。

我的服务器中有以下脚本:

socket.on('auth', function(uid, key) {
    client.hgetall(uid, function (err, data) {
        console.log(data);
        if(key != data['key']) {
            socket.disconnect();
        }
        this.user = data;
    });
});

socket.on('loginGame', function(gameId) {
    checkAuth();
    console.log(user);

    if(!games[gameId]) {
        games[gameId] = {};
    }

    games[gameId][uid] = uid;
});

在我的客户中;

socket.on('connect', function(){
    socket.emit('auth', 1, 1);
    socket.emit('loginGame', 1);        
});

当我运行此代码时,loginGame函数在auth函数之前完成,因为我正在进行I / O(使用redis)。我知道这是node.js的一个特性,但我想我错过了一些东西。我如何克服这个问题,因为auth函数需要在运行任何函数之前完成。 (我还有一些需要串行运行的函数)

我找到了一个node.js模块:https://github.com/creationix/step。但是,这是唯一的选择吗?我认为这是大多数node.js开发人员可能需要的东西。我也不擅长JS。

解决这个问题的最佳和最优雅的方法是什么?

谢谢,

1 个答案:

答案 0 :(得分:3)

让服务器在auth成功时发回确认,并在该消息的处理程序中发送loginGame。