Вы вызываете асинхронную функцию, но ожидаете возвращаемого значения в качестве функции синхронизации.
Обновите свой код, как показано ниже,
var fileConfigModule = (function () {
function init(callback) {
loadJSON(function (json) {
callback(json);
});
}
// Let's hide this function
function loadJSON(callback) {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', './data.json', true);
xobj.onreadystatechange = function () {
if (xobj.readyState == 4 && xobj.status == "200") {
callback(JSON.parse(xobj.responseText));
}
};
xobj.send();
}
return {
loadJSON: loadJSON,
init: init
}
})();
И вызовите, как показано ниже,
var arData = null;
fileConfigModule.init(function(data){
arData = data;
});
Я не знаю, почему вы пытаетесь скрыть функцию loadJSON
.Но я думаю, что вы должны напрямую использовать функцию loadJSON
вместо вызова функции init
.
Вызов loadJSON
,
var arData = null;
fileConfigModule.loadJSON(function(data){
arData = data;
});