Como converter Angular promete para jquery object diferido

Eu quero retornar promises do meu módulo / sdk para javascript não angular. Por exemplo, se eu estiver retornando prometo para um jquery, eu provavelmente deveria estar enviando jquery adiado object. Como posso converter uma promise angular em uma promise de jquery / obj diferido?

Todas as sugestões são muito apreciadas.

Disclaimer : jQuery promete não brincar bem com outras bibliotecas – de todo . A jQuery não assimilará outras promises de terceiros por conta própria. Angular $ q promete, por outro lado – assim, sempre que tiver a escolha, assimile a promise do jQuery em uma promise Angular e não o contrário. (Tudo isso muda no jQuery 3.0, se você ver este aviso e 3.0 já foi liberado – por favor deixe um comentário).

Convertendo uma promise do jQuery em uma promise Angular:

var angularPromise = $q.when(jQueryPromise); // eg: $q.when($.get(...)); 

Convertendo uma promise jQuery para uma promise nativa ou Bluebird:

 var promise = Promise.resolve(jQueryPromise); // eg: Promise.resolve($.get(..)); 

Convertendo uma Promessa de queixa Promessa / A + como promise $ q angular ou promise Bluebird ou promises nativas em promises jQuery:

 function convert(p){ var d = $.Deferred(); p.then(function(val){ d.resolve(val); }, function(err){ d.reject(err); }); return d.promise(); } var jqPromise = convert($http.get(...)); // example usage // you might be tempted to think you can easily do: var jqPromise = $.when($http.get(...)); // however - this will will fail inconsistently due to differences between // jQuery and Angular promises 

Também vale a pena – promises angulares podem consumir promises jQuery :

 $http.get(...).then(function(id){ return $.get("http://..."+id); // will work, though pointless because $http.get }).then(function(result){ // contains result of $.get call here });