2013-09-23 72 views
6

我有一些舊的JavaScript庫,它們使用jQuery promises作爲函數調用的返回對象。我現在使用AngularJS,它使用$q service(受Q library的啓發)。 是否有人有一些通用的JavaScript代碼,使這兩個不同的承諾實現兼容,以便jQuery承諾可以使用,就像它在$ q承諾?或者類似的東西?

+0

謝謝你的回覆。我知道這一點,但將它應用到任何地方都很麻煩。下面的答案更多是我(和其他人)正在尋找的東西。 –

回答

21

第三方承諾可以用$q.when(thirdPartyPromise)包裝以轉換爲$ q承諾。當thirdPartyPromise解決時,$ q許諾會作出相應的解決,並調用$scope.$apply()

+0

Thanx!錯過了文檔中的那一個。 –

+2

我很高興$ q也從Q中挑選出來。訣竅是任何實現'promise.then(cb,eb)'的東西都可以轉換爲另一種類型的承諾,而忽略返回值。這就是所謂的「可靠性」。 –

+0

@KrisKowal,如果'$ q.when()'包裝器開始炒作,那麼推測簡單形式的強制'$ q(thirdPartyPromise)'? –