0

Имеется javascript код, который загружает данные json с сервера.

$(document).ready(function () {
    JsonExample();
});

function JsonExample() {
    var base = this;

    this.callbacks = {
        prepareDate: function() {
            var dataJson = [];

            $.getJSON('/json/example.json', function(data) { //не срабатывает
                dataJson = data;
            })
            .fail(function () {
                console.log('error load json');
            });
            return dataJson; //соответственно, возвращает пустой массив
        },
        init: function() {
            base.date = this.prepareDate();
        }
    };
    callbacks.init();
};

Проблема заключается в том, что после вызова функции prepareDate не срабатывает $.getJSON и в итоге возвращается пустой массив dataJson. Самое непонятное то, что после выполнения JsonExample, каким то чудом, $.getJSON срабатывает, и в dataJson появляются данные, но они соответственно уже не возвращаются.

Возможно ли, при вызове prepareDateкак-нибудь заставить сработать $.getJSON и возвратить данные?

Может проблема заключается в том, что $.getJSON является асинхронной функцией?

И да, я знаю, что если просто вынести код в $(document).ready всё будет работать, но мне важна структура и понимание, почему - это не срабатывает.

0 Answers0