2014-07-07 25 views
8

Modüller/sdk'm vaatlerimi açısal olmayan javascript'e döndürmek istiyorum. Örneğin, bir jQuery'e söz veriyorum, muhtemelen jquery ertelenmiş nesneyi göndermeliyim. Angular sözünü jquery promise/deferred obj'e nasıl dönüştürebilirim.Açısal sözü jquery ertelenmiş nesneye dönüştürme

Her türlü öneri çok takdir edilmektedir.

+0

Neden? Bir örnek var mı –

+0

Örneğin, herhangi bir üçüncü taraf sözünü $ q.when (thirdPartyPromise) kullanarak bir $ q/Q sözüne dönüştürebilirsiniz. Ama sözümü kullanmak için kütüphaneye sahip olmalı. Müvekkilimin Q veya açısal kullanması için zorlamak istemiyorum, böylece sözümü yeniden kullanabilir. Onu uyumlu bir söze dönüştürürsem, kullanmak için daha az acı olurdu. – phani

+0

Minimalist bir vaat kitaplığı kullanmayı düşünmelisiniz, jQuery vaatlerini değil, jQuery vaatleri hata işlemede doğal olarak sorunludur. –

cevap

20

Yasal Uyarı: jQuery vaatleri diğer kütüphaneler ile oynamak güzel değil - tüm de. jQuery, diğer üçüncü taraf sözlerini kendi başına özümseyemez. Öte yandan açısal $ q söz verir - bu yüzden seçiminiz olduğunda, jQuery sözünü Anısal bir vaatte özümseyecek ve tam tersi değil. (JQuery 3.0'daki tüm bu değişiklikler, eğer bu yasal uyarıyı görüyorsanız ve 3.0 yayınlanmışsa - lütfen yorum bırakın).

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

bir yerli veya Bluebird sözünü bir jQuery sözünü dönüştürme: $ q Açısal gibi Sözler/A + şikayet söz dönüştürme

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

bir Açısal vaadi içine jQuery sözünü dönüştürme

jQuery'nin sözünü veya Bluebird sözünü veya yerel sözlerini vaat ediyor:

Ayrıca değer belirterek - Açısal sözler jQuery vaat tüketebilir:

$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

Cevabınız için çok teşekkür ederim Benjamin. – phani

+0

Merhaba, bir signalR sözüm (SignalR bir JQuery sözünü döndürür), chunkPromise = proxy.server.myMethod (a, b) ancak $ q.when (chunkPromise) yaptığımda döndürülen nesne "d" olur $ bir eyalet üyesi ve bir $ q söz değil. neyi yanlış yapıyorum? – pomarc

+0

Jquery 3.0 yayımlandı;) –

İlgili konular