我需要從客戶端的服務器獲取信息。 所以在服務器端,我得到這個當客戶第一次連接:JavaScript,node.js在繼續之前等待socket.on響應
socket.on('adduser', function(username){
// misc code, where i set num_player and whatnot
socket.emit('confirmauth', socket.id, socket.num_player, function(data){
console.log(data)
});
// code
}
,並在客戶端上我得到了這個:
var current_player;
socket.on('confirmauth', function(id, username, num, callback) {
current_player = new Player(username,id, num);
console.log(current_player.id); // works
console.log(current_player.num); //works
callback('ok i got it');
});
console.log(current_player.id); //undefined
console.log(current_player.num); //undefined
我的問題是,玩家插座的那個之外沒有定義。看來,JavaScript不會等待我的套接字在繼續之前檢索數據。
我試圖在$ .when中完成封裝socket.on,但它不起作用。我試圖做一個回調,但我想我可能不太清楚它應該如何工作。所以如果你們中的一個願意幫助我,我將不勝感激
謝謝你的回答。
這就是爲什麼nodejs需要半字節 –
@LuisMasuelli:我找不到任何關於節點的「半字節」庫。如果你的意思是「敏捷」,那不是我想到的,因爲它仍然強迫你使用庫而不是現有的JS特性,如while循環或try-catch來控制流。請參閱[this](http://stackoverflow.com/questions/9432587/what-is-the-correct-way-to-chain-async-calls-in-javascript/9432771#9432771)。 – hugomg
也許錯了名字。讓我再看一遍... - 是的,你說得對。它反正很糟糕,但它是異步編程 –