JavaScript, node.js wait for socket.on response before continuing
javascript, node.js, sockets, wait
Solution
If you are putting the `current_player` variable outside of the `on` callback in an attempt to `return` it, the alternative is to make your own function receive a callback
function getPlayer(onDone){
socket.on('confirmauth', function(id, username, num, callback) {
var current_player = new Player(username,id, num);
onDone(current_player);
});
}
And instead of doing
var player = getPlayer();
//...
You do
getPlayer(function(player){
//...
});
It kind of sucks that the "callbackyness" is a bit infectious in Javascript but such is life until everyone starts using Generators instead.
Problem
I need to get information from the server on the client side. So on the server side I got this when a client first connect: ``` 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 } ``` and on the client side I got this: ``` 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 ``` my problem is that outside of the socket on, the player is not defined. It seems that javascript doesn't wait for my socket on to retrieve data before carrying on. I tried to wrap socket.on in a $.when done, but it doesn't work. I tried to do a callback, but I think I may not have understood very well how it is supposed to work. So if one of you is willing to help me, I will be grateful Thank you for your answers.