2016-03-25 40 views
0

所以我有这样的代码如何确保angularjs同步加载app.js

getTens.getToken($rootScope.webUserInfo[0].username).then(function(resulttoken) { 
     $rootScope.userInfo = resulttoken; 
     $sessionStorage.token = resulttoken[0].token; 
     $sessionStorage.userInfoStorage = $rootScope.userInfo; 
     CasesGroupByCaseStatus.getListing($rootScope.webUserInfo[0].username).then(function(data){ 
      $rootScope.listingDetails = data; 
      $sessionStorage.listingDetailsStorage = $rootScope.listingDetails; 
     }); 

     CasesGroupByCaseStatus.caseStatusCount($rootScope.webUserInfo[0].username).then(function(resultcaseStatus){ 
      $rootScope.dashboardStatus = resultcaseStatus; 
      $sessionStorage.dashboardStatusStorage = $rootScope.dashboardStatus; 
      console.log("it is finished") 
     }); 
     }); 
     return [200, { authorizationToken: $sessionStorage.token}]; 

在我的代码,我希望它完成的功能首先在返回值之前,但发生的事情是,它触发回运行该功能的第一个wtout,我该如何处理?

此代码是我的app.js.所以我不能做诸如scope.watch之类的东西。

+0

而不是返回实际的对象,你为什么不返回一个承诺,并解决所有其他承诺解决后呢? – sdfacre

回答

0

我不知道这是否是解决问题的好办法,但我的应用程序,我把

$rootScope.$broadcast('loaded', true); 

异步部分的回调/成功函数 内,然后把我的代码,这里面:

$scope.$on('loaded', function(){ //everything is loaded }); 

就像我说的,不知道这是否是一个好的解决方案。我使用它来让我的应用程序等待异步函数在启动我的应用程序之前完成读取文件。我猜,有些答案总比没有答案好。