Chaîne Angulaire $http appels correctement?

J'ai lu sur $q et de promesses de jours maintenant et j'ai l'impression de le comprendre...un peu. J'ai la situation suivante dans la pratique:

  1. $Requête http et vérifie si un appel peut être fait.
  2. Si le premier appel échoue, le retour "pas de données", si elle réussit, et dit d'un appel peut être fait, le deuxième appel est effectué, si ce n'est pas "pas de données". Si le second appel réussit, il renvoie les données, si ce n'est pas "pas de données". Il ressemble à ceci (environ, je l'ai simplifié pour l'idée générale, donc ne vous inquiétez pas les petites erreurs ici):
            return $http.get (something)
                .then(function(allowedAccess){
                    if(allowedAccess){
                        return $http.get (somethingElse)
                            .then( function(result){return {data:result} },
                            function(error){return {data:"n0pe"} }
                        )
                    } else {
                        return {data:"n0pe"}
                    }
                },
                function(){ return {data:"n0pe"} });

M'a dit d'utiliser $q ici. Je ne comprends pas vraiment comment ni pourquoi je le ferais. L' $http appels sont des promesses déjà.

Si il y a un moyen de faire plus propre, je ne la vois pas. Juste de me faire re-lecture de ce poster sur le sujet. Essentiellement, suis-je raté quelque chose /est-il une meilleure façon de le faire?

Edit: viens de re-lire un tutoriel sur le chaînage de promesses - il ne gère pas les échecs d'appel. Fondamentalement, l'affichage de ce qu'une diligence raisonnable.

Edit 2: C'est plus élaborée sur la théorie, je suis enquise, extrait du premier article:

C'est un exemple simple. Il devient vraiment puissant si votre alors() de rappel renvoie une autre promesse. Dans ce cas, la prochaine alors() n'est exécutée qu'une fois que la promesse se résout. Ce modèle peut être utilisé pour la série de requêtes HTTP, par exemple (où une demande dépend du résultat de la précédente):

Ce qui semble être de parler de chaînes comme ceci:

   asyncFn1(1)
    .then(function(data){return asyncFn2(data)})
    .then(function(data){return asyncFn3(data)})

Donc, si je comprends bien cette une). Ne s'applique pas à moi parce que je n'ai pas de 3ème fonction. b). Pourrait s'appliquer à moi, si j'avais trois fonctions car bien que j'ai exécuter une instruction si à l'intérieur de la première tranche de la requête http, et seulement à l'intérieur de l'instruction si puis-je retourner une autre promesse. Donc, théoriquement, si j'avais trois async fonctions de la chaîne, j'aurais besoin de mettre mon instruction if à l'intérieur d'une promesse?

OriginalL'auteur VSO | 2015-09-13