Undefined przy pobieraniu JSON'a z pliku

0

Witam,
chcę pobrać dane w formacie JSON z pliku:

function newTileMapFromJSON(src) {
    var mymap;
    $.getJSON(src, function(data) {
        mymap = data;
        console.log(mymap); //sprawdzam 1
    });
    console.log(mymap); //sprawdzam 2
}

newTileMapFromJSON("tilemaps/testmap.json");

No i mam problem, ponieważ przy "sprawdzam 2", "mymap" ma wartość undefined (a przy sprawdzam 1 wszystko jest dobrze)

Dziwne jest także to co widać w logach: wychodzi na to, że linijka 7 (to przy *sprawdzam 2) wykonuje się przed *sprawdzam1.

Wyjaśni mi ktoś dlaczego kod wykonuje się nie po kolei i jak temu zaradzić?

0

getJSON wywoływane jest asynchronicznie. Puszczone jest zapytanie, a reszta kodu leci sobie jak leciała. Logika która musi korzystać z danych pobranych z JSONa niech odbywa się w ciele funkcji - tzw. callback

 function(data) {
        mymap = data;
        console.log(mymap); //sprawdzam 1
    }
0
function calyKod()
{
   //caly kod!
};
$.getJSON(src, function(data) {
   calyKod();
});

To tak uprszaczając bardzo.
Nie wiem dokladnie jak Twoj kod ma działac ;)

0

@Swr tak to wygląda:

function newTileMapFromJSON(src) {
    var mymap;
    $.getJSON(src, function(data) {

        [jakieś mało znaczące w tej chwili obliczenia]

        var dane = {
            map: tMap,
            tiles: blocks,
            name: MapName
        };

        return dane;
    });
}

Funkcja newTileMapFromJSON teraz nie ma prawa zwracać niczego ponieważ... no nie może :P
Więc co zrobić, żeby ta funkcja zwracała te "dane"?

0

możesz w callbacku wywoływać jakąś funkcje która przyjmuje jako argument te dane, i te dane są gdzieś ustawiane <- tak zamiast return

1 użytkowników online, w tym zalogowanych: 0, gości: 1