等待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函数需要在运行任何函数之前完成。 (我有几个需要连续运行的function)

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

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

谢谢,

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