2013-06-07 4 views
0

J'utilise firebase avec angularjs. Je veux reporter FirebaseAuthClient rappel. Tout fonctionne bien mais juste le rejet ne fonctionne pas si ajouté. s'il vous plaît voir mon code de l'extrait.angularjs deferred.reject() ne fonctionne pas

Dans l'usine

auth.callback = function(error, user) { 
    $timeout(function() { 
     if (user) { 
      deferred.resolve(user); 
     } else if (error) { 
      deferred.reject(error); 
     } else { 
      //QUESTION HERE, if this line is added, the promise 
      //will not working at all means function inside 
      //.then() will not trigger. If I comment it out 
      //Everything work fine, but how can I know if use logout ? 
      deferred.reject(); 
     } 

    }, 0); 
    return deferred.promise; 
} 

auth.firebaseAuthClient = new FirebaseAuthClient(firebaseRef, function(error, user) { 
    auth.callback(error, user); 
}); 

En .run()

firebaseAuth.callback().then(function(success){ 
     $rootScope.isLoggedIn = true; 
    }, function(fail) { 
     $rootScope.isLoggedIn = false; 
    }) 
+0

où vous avez défini différé? –

+0

@Ajaybeniwal juste le code de l'extrait. J'ai défini en haut, var différée = $ q.defer(); – vzhen

Répondre

1

Il vous manque le code q.reject de $ de retour (raison) dans le rappel de l'échec d'alors appel de fonction.

Il est couvert dans le $q angularjs docs

+0

Bonjour, Charles, je ne comprends pas. J'ai ajouté 'deferred.reject ('utilisateur non connecté')'. Ensuite, je teste 'console.log()' dans la fonction '.then()' mais il retourne l'utilisateur qui ne se connecte pas et je confirme que l'utilisateur est déjà connecté. – vzhen

+0

Je ne le vois pas non plus, n'est pas la deuxième fonction de rappel dans 'then()' la fonction de rappel d'échec? –

+0

cela ne l'a pas arrangé pour moi non plus. quelqu'un peut-il poster un jsfiddle de reject() en train de travailler ... (arrêt de l'exécution du suivant puis()) – timh