Mam kilka starych bibliotek JavaScript, które używają jQuery promises jako obiektów powrotu z wywołań funkcji. Używam teraz AngularJS, która używa $q service (inspirowanej przez Q library). Czy ktoś ma jakiś ogólny kod JavaScript, aby te dwie różne implementacje obietnic były kompatybilne, tak że obietnice jQuery mogą być używane tak, jakby to było, gdy $ q obiecuje? Lub coś podobnego?
Odpowiedz
Obietnice osób trzecich można opakować za pomocą $q.when(thirdPartyPromise)
w celu ich konwersji na kwoty w wysokości $ q. Kiedy thirdPartyPromise
rozwiązuje, obietnica $ q rozwiązuje się i wywołuje się $scope.$apply()
.
Thanx! Brakowało tego w dokumentach. –
Cieszę się, że $ q również podniosło to z Q. Sztuczka polega na tym, że wszystko, co implementuje "promise.then (cb, eb)", może zostać rzucone na obietnicę innego typu, ignorując wartość zwracaną. Nazywa się to "nieśmiertelnością". –
@KrisKowal, jeśli otoczy opakowanie '$ q.when()', to prawdopodobnie będzie to prosta forma przymusu '$ q (thirdPartyPromise)'? –
Dziękuję za odpowiedź. Wiedziałem o tym, ale trudno go zastosować wszędzie. Poniższa odpowiedź jest bardziej tym, czego szukałem (i prawdopodobnie innych). –