gpt4 book ai didi

javascript - 如何在这种情况下使用 JavaScript setTimeout()

转载 作者:行者123 更新时间:2023-12-02 15:44:57 25 4
gpt4 key购买 nike

在我的 Angular 应用中,app.js 代码从服务器端检索 sessionIDuserID

同时,我的导航 Controller 正在设置一个也来自服务器端的菜单。

问题是我的导航 Controller 在 app.js 例程之前执行。结果是我的 sessionIDuserID 变量尚未分配。

理想情况下,我想知道如何让我的 app.js 代码在执行任何操作之前触发。

但是,与此同时,我想使用 JavaScript setTimeout() 函数来模拟延迟调用。意思是,我只想在定义了我的 sessionID 和 userID 变量后继续。

我的 app.js 代码(其中初始化 session 和用户变量):

(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";
});
}
});
});
}

})();

navigation-controller.js 代码(其中用户和 session 变量尚未定义):

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);
}

最佳答案

您可以在 Controller 中使用 $interval 每隔 x 毫秒检查 userID 和 sessionID 是否已返回,如下所示:

var stop = $interval(function() {
if ($rootScope.rageSessionVars.sessionID != undefined) {
//SUCCESS CODE HERE - DON'T FORGET TO STOP THE INTERVAL!
$interval.cancel(stop);
}
}, 100);

我使用了 100 毫秒,请根据您的需要进行更改。 $interval API

关于javascript - 如何在这种情况下使用 JavaScript setTimeout(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32279689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com