responsabilità: promesse jQuery non giochino carino con altre biblioteche - a
tutto. jQuery non assimilerà altre promesse di terze parti da solo. D'altra parte, promette $ angolari - così, ogni volta che avrai la scelta, assimilerai la promessa jQuery in una promessa angolare e non viceversa. (Tutto questo cambia in jQuery 3.0, se vedi questo disclaimer e 3.0 è già stato rilasciato - per favore lascia un commento).
Conversione di una promessa jQuery in una promessa angolare:
var angularPromise = $q.when(jQueryPromise); // eg: $q.when($.get(...));
Conversione di una promessa jQuery per una promessa nativo o Bluebird:
var promise = Promise.resolve(jQueryPromise); // eg: Promise.resolve($.get(..));
Conversione di un Promises/A + denuncia promessa come $ q angolare promessa o promessa di Bluebird o promesse native nelle promesse di 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
Anche la pena notare - promesse angolare può consumare jQuery promette:
$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
});
fonte
2014-07-07 13:13:01
Perché? Hai un esempio? –
Ad esempio, è possibile convertire qualsiasi promessa di terze parti a una promessa $ q/Q utilizzando $ q.quando (thirdPartyPromise). Ma dovrei avere quella libreria per usare la mia promessa. Non voglio forzare il mio cliente a usare Q o angolare in modo che possa riutilizzare la mia promessa. Se potessi convertirlo alla promessa compatibile che voleva sarebbe meno doloroso da usare. – phani
Si dovrebbe considerare l'utilizzo di una libreria di promessa minimalista e non di promesse jQuery, le promesse di jQuery sono intrinsecamente problematiche nella gestione degli errori. –