Имеется 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 всё будет работать, но мне важна структура и понимание, почему - это не срабатывает.
Может проблема заключается в том, что $.getJSON является асинхронной функцией- да. – Алексей Шиманский Feb 12 '17 at 13:30