2013-09-23 6 views
6

J'ai quelques anciennes bibliothèques JavaScript qui utilisent jQuery promises comme objets de retour d'appels de fonction. J'utilise maintenant AngularJS qui utilise le $q service (inspiré du Q library). Quelqu'un a-t-il du code JavaScript générique pour rendre compatibles ces deux implémentations de promesses différentes, afin que les promesses jQuery puissent être utilisées comme si $ q promet? Ou quelque chose de similaire?

+0

Merci d'avoir répondu. Je connaissais celui-ci, mais il est difficile de l'appliquer partout. La réponse ci-dessous est plus ce que je (et probablement d'autres) recherchais. –

Répondre

21

Les promesses de tiers peuvent être complétées avec $q.when(thirdPartyPromise) pour être converties en promesses $ q. Lorsque le thirdPartyPromise résout, la promesse $ q se résout en conséquence et $scope.$apply() est appelée.

+0

Merci! Manqué celui-là dans les docs. –

+2

Je suis content que q ait aussi pris ça à Q. L'astuce est que tout ce qui implémente 'promise.then (cb, eb)' peut être converti en une promesse d'un autre type, en ignorant la valeur de retour. C'est ce qu'on appelle "thenability". –

+0

@KrisKowal, si l'enveloppe '$ q.when()' woks, alors probablement la forme simple de coercion '$ q (thirdPartyPromise)'? –

Questions connexes