2016-03-25 41 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 }); 

就像我說的,不知道這是否是一個好的解決方案。我使用它來讓我的應用程序等待異步函數在啓動我的應用程序之前完成讀取文件。我猜,有些答案總比沒有答案好。