0

I have this code :

function loadCharacter(characterName) {
    var characterObject = {"Tri":"t"};

    socket.emit("loadCharacter", { "name" : characterName },function(dataFromServer) {
        console.log(dataFromServer);
        characterObject = dataFromServer;
    });

    return characterObject;
};

var localCharacter = loadCharacter("Gabriella");
console.log(localCharacter);

console.log(dataFromServer) displays data from the server as it should be, but console.log(localCharacter) displays the original value, {"Tri":"t"}, instead of dataFromServer's value.

How to change characterObject's value and return it?

Dorklord
  • 416
  • 2
  • 6
  • 17
  • 1
    Get used to async JS, using callbacks. It's everywhere. No return values anymore, only callbacks. The callback is `function(dataFromServer)` so `loadCharacter()` doesn't have a return value. – Rudie Dec 05 '15 at 11:42
  • your function returns the value before it is changed by the callback – Pavel Gatnar Dec 05 '15 at 11:43

1 Answers1

0

This is because

characterObject = dataFromServer;

...is run after

return characterObject;
Ben Aston
  • 53,718
  • 65
  • 205
  • 331