Question Un moyen de savoir si une variable est une promesse angularjs?


Je fais une directive qui prend une fonction comme paramètre de portée (scope: { method:'&theFunction' }). Je dois savoir si le résultat renvoyé par cette méthode est une promesse angulaire (si oui, quelque chose se produira lors de la résolution, sinon cela se produit tout de suite).

Pour l'instant je teste si foo.then existe mais je me demandais s'il y avait une meilleure façon de le faire.


57
2017-12-21 21:27


origine


Réponses:


Vous pouvez utiliser $q.when envelopper l'objet comme une promesse (que ce soit ou non). Ensuite, vous pouvez être sûr que vous avez toujours affaire à une promesse. Cela devrait simplifier le code qui gère alors le résultat.

Documentation pour $q.when est ici avec $ q.


81
2017-12-21 21:36



Angulaire when() est une bonne option comme Davin l'a mentionné.

Si cela ne répond pas à vos besoins, alors Angular moyen interne de vérification (il l'utilise à l'intérieur when) est très proche de ce que vous faites:

var ref = function(value) {
   if (value && isFunction(value.then)) {
      // Then this is promise
   }

78
2017-12-21 21:49



@kayakDave, merci de vous rendre au bon endroit.

angulaire $ q

when(value, [successCallback], [errorCallback], [progressCallback]);
            Wraps an object that might be a value or a (3rd party) then-able promise into a $q promise. 
            This is useful when you are dealing with an object that might  or might not be a promise, 
            or if the promise comes from a source that can't be trusted.
$q.when(value).then(function (data) {
//this helps me to bind data from $resource or $http or object
}

vérifie ça violon


4
2017-10-14 17:51