我一直在玩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。
解决这个问题的最佳和最优雅的方法是什么?
谢谢,
答案 0 :(得分:3)
让服务器在auth成功时发回确认,并在该消息的处理程序中发送loginGame。