2014-07-07 6 views
8

Ich möchte Versprechungen von meinem Modul/SDK zu nicht-eckigen Javascript zurückgeben. Zum Beispiel, wenn ich eine jQuery versprochen habe, sollte ich wahrscheinlich jquery deferred object senden. Wie kann ich ein Angular-Versprechen in ein JQuery-Versprechen/Deferred-Obj umwandeln?Wie konvertieren Winkel Versprechen zu jquery aufgeschoben Objekt

Alle Vorschläge werden sehr geschätzt.

+0

Warum? Haben Sie ein Beispiel? –

+0

Zum Beispiel können Sie jede dritte Partei Versprechen in eine $ q/Q Versprechen mit $ q.when (ThirdPartyPromise) konvertieren. Aber sollte diese Bibliothek mein Versprechen haben. Ich möchte meinen Kunden nicht zwingen, Q oder eckig zu verwenden, damit er mein Versprechen wieder verwenden kann. Wenn ich es in das kompatible Versprechen umwandeln könnte, würde er weniger Schmerzen haben. – phani

+0

Sie sollten die Verwendung einer minimalistischen Versprechen Bibliothek und nicht jQuery verspricht, jQuery Versprechen sind inhärent problematisch in der Fehlerbehandlung. –

Antwort

20

Haftungsausschluss: jQuery Versprechungen mit anderen Bibliotheken nicht schön spielen - bei alle. jQuery wird andere Versprechungen Dritter nicht selbst übernehmen. Angular $ q Versprechen auf der anderen Seite - Willen, so, wann immer Sie die Wahl haben, assimilieren Sie das jQuery Versprechen in ein Angular Versprechen und nicht umgekehrt. (All dies ändert sich in jQuery 3.0, wenn Sie diesen Disclaimer sehen und 3.0 bereits veröffentlicht wurde - bitte hinterlassen Sie einen Kommentar).

ein jQuery Versprechen in ein Angular Versprechen Converting:

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

ein jQuery Versprechen auf ein natives oder Drossel Versprechen Converting:

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

ein Versprechen Converting/A + Beschwerde Versprechen wie $ q Angular versprechen oder Bluebird Versprechen oder native Versprechungen in jQuery verspricht:

Auch erwähnenswert - Angular Versprechen verbrauchen können jQuery verspricht:

$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 
}); 
+1

Vielen Dank für Ihre Antwort Benjamin. – phani

+0

hallo, ich habe eine signalR Versprechen (SignalR gibt eine Jquery Versprechen), chunkPromise = proxy.server.myMethod (a, b) aber wenn ich $ q.when (chunkPromise) das zurückgegebene Objekt ist "d", mit nur ein $$ state-Mitglied und kein $ q-Versprechen. Was mache ich falsch? – pomarc

+0

Jquery 3.0 wurde freigegeben;) –

Verwandte Themen