2017-05-11 8 views
1

私は約束を得るためにangularJSから$qを使用しています。

私はいくつかの操作を行うためにコントローラの約束の値をチェックします。

しかし、私はそれを比較する方法を理解できません。

これは私が私のファクトリメソッドで行う方法です。

AuthService.getActifUser = function() { 
      var deferred = $q.defer(); 
      cognitoUser = userPool.getCurrentUser(); 
       if (cognitoUser) { 
        cognitoUser.getSession(function(err, session) { 
           if (err) { 
             alert(err); 
             deferred.reject('failed to login'); 
           } else { 
            deferred.resolve('logged in'); 
           } 
           }); 
         } else { 
          deferred.reject('not logged in'); 
       } 
       return deferred.promise; 
     }; 

そして、これは私が私のコントローラでそれを取得しようとする方法である:

res

var res = AuthService.getActifUser(); 
     console.log(res); 
     if (res != 'logged in') { 
      console.log(res); 
      routeService.goToView('/pages/login') 
     } 

ログがあることを私に示して

誰か知っていますか?

+0

を使用しています結果を認識ルーティング? – deostroll

答えて

1

var res = AuthService.getActifUser(); 

     res.then(function (response) { 
      console.log("logged successfully"); 

     }, function (response) { 
      routeService.goToView('/pages/login') 
     }); 

二フェイル、角度意志自動車の成功の結果のための第一の機能は、あなたがいずれかを

+0

これは完璧です! – rastafalow

0

Object { $$state: Object }ショーあなたの約束はまだこの

AuthService.getActifUser().then(function(data){ 
     var res = data 
     console.log(res); 
     if (res != 'logged in') { 
      console.log(res); 
      routeService.goToView('/pages/login') 
     } 
}); 
1

解像度のような約束は約束であり、データを取得するために解決すべきキャッチコントローラをresolving.inされた時点でだから。

あなたが記録している状態オブジェクトは、promiseオブジェクトの状態です。

あなたはこのように確認することができますif文で解像度をチェックする必要がいけない
res.then(function(resp){ 
//succesful response 
}) 
.catch(function(err){ 
//exception happened 
})