Я хочу получить данные из нескольких JS-файлов, когда документ готов:
A.js
var dataController;
let loadedData_haz;
$(document).ready(function () {
dataController = new DataController();
loadedData_A = dataController.getloadedLanguage().A;
fillForm_A(loadedData_haz);
});
B.js
var dataController;
let loadedData_B;
$(document).ready(function () {
dataController = new DataController();
loadedData_B = dataController.getloadedLanguage().B;
fillForm_B(loadedData_B);
});
C.js
var dataController;
let loadedData_C;
$(document).ready(function () {
dataController = new DataController();
loadedData_C = dataController.getloadedLanguage().C;
fillForm_C(loadedData_haz);
});
В моем файле data.controller.js я получаю JSON-объект с данными для вышеупомянутых файлов, таких как ...
data.controller.js
let dataService;
$(document).ready(function () {
dataService = new DataService();
loadLanguage();
});
function DataController() {
if(!dataService) {
dataService = new DataService();
}
/*
getter
*/
this.getloadedLanguage = function () {
return dataService.getloadedLanguage();
};
}
let loadLanguage = function () {
var m = dataService.loadLanguagePromise();
$.when(m).done(dataService.handleData);
};
А в data.service.js я читаю содержимое моего TXT.file
data.service.js
letloadedLanguage;
function DataService() {
/*
getter
*/
this.getloadedLanguage = function () {
return loadedLanguage;
};
}
DataService.prototype.handleData = function (response) {
loadedLanguage = JSON.parse(response);
localStorage.setItem('lang', response);
};
DataService.prototype.loadLanguagePromise = function () {
return new Promise(function (resolve, reject) {
$.ajax({
url: "php/services/readLanguage.php",
type: "GET",
async: true,
dataTyp: 'json',
success: function (data) {
resolve(data);
},
error: function (xhr, desc, err) {
reject(Error("It broke"));
}
})
})
};
Каждый раз, когда я перезагружаю свое приложение, загруженные данные не определены.Иногда загруженные данные_B не определены, а иногда загруженные данные_B и загруженные данные_C не определены.Это нормально из-за моего кода.
Поэтому я хотел бы изменить метод loadLanguage в data.service.js на функцию обратного вызова с new Promise .Я предполагаю, что это правильный способ сделать это.Любые улучшения или рекомендации приветствуются!