2013-09-23 15 views
6

Ho alcune vecchie librerie JavaScript che usano jQuery promises come oggetti di ritorno dalle chiamate di funzione. Ora sto utilizzando AngularJS che utilizza lo $q service (ispirato allo Q library). Qualcuno ha un codice JavaScript generico per rendere compatibili queste due diverse implementazioni di promessa, in modo che le promesse di jQuery possano essere usate come se promettesse $ q? O qualcosa di simile?

+0

Grazie per la risposta. Lo sapevo, ma è complicato applicarlo ovunque. La risposta qui sotto è più ciò che io (e probabilmente altri) stavamo cercando. –

risposta

21

Le promesse di terze parti possono essere completate con $q.when(thirdPartyPromise) da convertire in $ q promesse. Quando si risolve il thirdPartyPromise, la promessa $ q si risolve di conseguenza e viene chiamato $scope.$apply().

+0

Grazie! Manca quello nei documenti. –

+2

Sono contento che $ q lo abbia estratto anche da Q. Il trucco è che tutto ciò che implementa 'promise.then (cb, eb)' può essere lanciato su una promessa di un altro tipo, ignorando il valore restituito. Si chiama "thenability". –

+0

@KrisKowal, se il wok di '$ q.when()' wrapper, allora presumibilmente sarà la semplice forma di coercizione '$ q (thirdPartyPromise)'? –