Я намерен загружать данные с сервера только после аутентификации пользователя. Для простоты предположим, что пользователь уже аутентифицирован.
Я поместил вызов функции загрузки данных (которая загружает данные из хранилища) в функцию инициализации Main.js, как вы можете видеть ниже.
Однако функция getStore('storeId').load() является асинхронной, что заставляет меня беспокоиться о том, что хранилище данных завершает загрузку только после завершения загрузки главного представления, что может заставить представление загружаться без данных (исправьте меня, если я ошибаюсь, возможно, сенча может справиться с этим, представление имеет ссылку на storeId).
Как лучше всего решать такие проблемы?
Тривиальное решение: вызов загрузки хранилища синхронно, но имеет ли это какое-то значение? и на всякий случай, как это сделать? Я попытался добавить синхронную переменную со значением true, но не работает.
app.js
launch: function() {
// Destroy the #appLoadingIndicator element
Ext.fly('appLoadingIndicator').destroy();
Ext.Ajax.request({
url: MyApp.app.baseUrl + 'session/mobileCheckAuth',
method: "POST",
useDefaultXhrHeader: false,
withCredentials: true,
success: function(response, opts) {
if (response && response.status === 200) {
Ext.Viewport.add(Ext.create('MyApp.view.Main'));
} else {
Ext.Viewport.add(Ext.create('MyApp.view.LoginPanel'));
}
},
failure: function(response, opts) {
alert('Unexpected failure detected');
Ext.Viewport.add(Ext.create('MyApp.view.LoginPanel'));
}
});
},
Main.js
Ext.define('MyApp.view.Main', {
...
initialize: function() {
console.log('main.initialize');
this.callParent(arguments);
// Load app data
MyApp.utils.Functions.loadData();
}