В моем приложении «Угловое» код app.js
извлекает sessionID
и userID
со стороны сервера.Как использовать JavaScript setTimeout() в этом сценарии
В то же время мой контроллер навигации настраивает меню, которое также поступает со стороны сервера.
Проблема в том, что мой контроллер навигации выполняет ДОПОЛНЕНИЕ процедуры app.js. И результат в том, что мне присвоены переменные sessionID
и userID
.
В идеале, я хотел бы знать, как получить код app.js
, чтобы стрелять раньше всего.
Однако, тем не менее, я хотел бы использовать функцию JavaScript setTimeout()
для имитации отложенного вызова. Значит, я только хочу продолжить, когда определены мои идентификаторы sessionID и userID.
Мой app.js код (где инициализируются сеанс и пользователь вары):
(function() {
'use strict';
angular.module('rage', [
'ui.router',
'ui.bootstrap',
'ui.dashboard',
'kendo.directives'
]).run(['$rootScope', '$state', 'userService', init]);
function init($rootScope, $state, userService) {
$rootScope.rageSessionVars = {};
$rootScope.$state = $state;
userService.getInitParams().then(function (razorEnvJson) {
$rootScope.rageSessionVars = razorEnvJson;
userService.init(rzEnvJson).then(function (data) {
var response = data.status;
if (response.match(/SUCCESS/g)) {
userService.openUserSession(razorEnvJson).then(function (data) {
var sessionID = data.data[0];
$rootScope.rageSessionVars.sessionID = sessionID;
$rootScope.rageSessionVars.userID = "bobmazzo1234";
console.log("sessionID = " + sessionID);
$rootScope.rageSessionVars.currDashboardName = "Default";
});
}
});
});
}
})();
Навигационная-controller.js код (где пользователь и сеанс вары не определены еще):
function activate() {
$timeout(getDashboards, 1000); // give time for app.js to init vars
}
function getDashboards() {
// GET ALL DASHBOARDS VIA API.
var timeout;
if ($rootScope.rageSessionVars.sessionID == undefined) {
?? SHOULD I DO SOMETHING HERE IN CASE ???
}
var sid = $rootScope.rageSessionVars.sessionID;
var userId = $rootScope.rageSessionVars.userID;
dashboardcontext.getDashboards(sid, userId);
}
Возможно, вы захотите заглянуть в ['$ timeout'] (https://docs.angularjs.org/api/ng/service/$timeout), который является тем более способным для AngularJS'ish. – War10ck
Возможно, вы захотите использовать обещания для этого случая. – toskv