使$ .getJSON立即可用与for

EDIT:

$.getJSON(url, function (data) {
var x = 0;
var places = [];
$.each(data.lugar, function (i, user) {
    places[x] = {
        canEdit: false,
        lat: user.latt,
        lng: user.lng,
        name: "Somewhere "+x
    };
    alert(isNumber(places[x].lng));
    x++;
}).promise().done(function () {
    $(document).ready(function() {
        runExample5();
    });
});
});

So Im trying to populate a map in javascript like this

{ showOnLoad: places ....

And it gets the job done with a for loop like this (it does show the markers) THIS WORKS

 var places = [];
  for(var x= 0; x<10; x++){
  places[x] = {
    canEdit: false,
    lat: 53.79+x,
    lng:-1.5426760000000286+x,
    name: "Somewhere "+x

}
}

But when I try to populate it with the info I receive on JSON/PHP from anothe page, it does not work, and it does not populate with markers...

 var places = [];
$.getJSON(url, function (data) {
var x = 0;
$.each(data.lugar, function (i, user) {
    places[x] = {
        canEdit: false,
        lat: user.latt,
        lng: user.lng,
        name: "Somewhere "+x
    };
    x++;
}).promise().done(function () {
});
});



function runExample5(a) {
 $("#search-for-places").mapsed({

    showOnLoad: places,
    allowGeo: true, 
    disablePoi: true


});                                 
 }


 $(document).ready(function() {
runExample5();

 });

I get no population unless I call another function and then it automatically show the markers but I cant seem to get it at the beginning when the map first loads but I get it when I use the FOR loop.

Just for the sake of completion, here's the correct solution:

$.getJSON(url).then(function (data) {
    // instead of map(), you could also use that tedious `each` loop
    // it would work the same
    return $.map(data.lugar, function (i, user) {
        return {
            canEdit: false,
            lat: user.latt,
            lng: user.lng,
            name: "Somewhere "+x
        }
    });
}).done(function (places) {
    $(document).ready(function() {
        // if you wanted to call a runExample5 function, make `places` a parameter
        $("#search-for-places").mapsed({
            showOnLoad: places,
            allowGeo: true, 
            disablePoi: true
        });
    });
});