2012-01-19 88 views
1

我一直在玩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功能之前,因爲我做的(使用Redis的)I/O完成。我知道這是node.js的一個特性,但我認爲我錯過了一些東西。在運行任何函數之前,我如何解決這個問題,因爲auth函數需要完成。 (我有幾個功能需要串行運行)

我找到了一個node.js模塊:https://github.com/creationix/step。但是,這是唯一的選擇嗎?我認爲這是大多數node.js開發人員可能需要的。我對JS也不太擅長。

解決此問題的最佳和最優雅的方式是什麼?

感謝,

回答

3

有服務器時AUTH成功發回的確認,並在處理該郵件發送loginGame。

+0

是的工作,謝謝! – Merinn