ОБНОВЛЕНИЕ: Я решил, что использование шаблона модуля JS не было «простым в использовании», поэтому я отказался от него и использовал отложенный объект jQuery для возврата данных, которые я искал. Мне действительно нужно было просто загрузить файл JSON и заполнить объект. Я просто пытался быть слишком фантастическим, включив JS Module Pattern.Возврат ajax-ответа по шаблону модуля JS
Большое спасибо @kiramishima за правильный ответ.
Ниже готовый код:
function getData(){
var url = CONTEXT + "/json/myJsonFile.json";
return $.getJSON(url);
}
getData()
.done(function(data){
myGlobalObj = data;
})
.fail(function(data){
console.log("fetching JSON file failed");
});
Я думаю, что я получаю немного слишком фантазии для собственного блага здесь. Я загружаю файл JSON и пытаюсь вернуть API через шаблон модуля JS. Проблема в том, что я считаю, что не выполняю обещание правильно, и я не знаю, как это исправить.
Вот мой JSON:
{
"result": {
"one": {
"first_key":"adda",
"second_key":"beeb",
"third_key":"cffc"
},
"two": {
"first_key":"adda",
"second_key":"beeb",
"third_key":"cffc"
}
}
}
А вот моя реализация JS Модуль:
var data = (function() {
var url = "/json/dummy.json";
var getAllData = function() {
return $.getJSON(url, function(result){});
};
var promise = getAllData(); // the promise
return {
getFirstObjSecondKey:function() {
return promise.success(function(data) {
return data.result.one.second_key;
});
},
getSecondObjThirdKey:function() {
return promise.success(function(data) {
return data.result.two.third_key;
});
},
};
})();
Проблема заключается в том, что "getAllData()" возвращается как неопределенные, и я не знаю, почему ; этот метод возвращает обещание, которое я должен обработать в функции «done». Как далеко я?
Спасибо за любой полезный ввод. Это первый раз, когда я возился с шаблоном модуля JS.
Не имеет значения, как фантазия вы получите, вы все еще не можете возвращать данные из асинхроннога ajax-вызов. – adeneo
Я предполагаю, что простым решением было бы использовать обратный вызов $ .getJson() для заполнения глобального объекта; и извлеченный урок будет состоять в том, чтобы не получить фантазии, пытаясь вернуть API, который предоставит методы для извлечения точных элементов из ответа. – fumeng