2014-03-29 55 views
1

我目前正在嘗試學習AngularJS框架,並且不斷聽到有關「promise」的信息。我已經研究了一些,儘管我似乎無法徹底解釋如何以及何時使用「承諾」。使用AngularJS Promise

任何人都可以請解釋並提供使用承諾,而不是使用承諾之間的解決方案。使用承諾而不使用承諾的優點是什麼?

所有的答案都讚賞。

謝謝。

回答

1

承諾的實現基本上提供了定義至少一個方法的接口「時」是因此迴歸,是「無極「,這是異步操作的結果。

優點是更好的代碼的可讀性(和生產爲好),結果更好的重用,而不會產生對驚嚇「回調地獄」,chainabilty等..

一個簡單的場景用jQuery:

沒有承諾

$.ajax({ 
    url: someurl, 
    success: function(data) 
    { 
     //do something with data 
    } 
}); 

與承諾

var p = $.ajax({ url: someurl }); 

$.when(p).then(function(data) 
{ 
    //do something with data  
}); 

然而,一個更好的解釋:http://wiki.commonjs.org/wiki/Promises/A

+0

因此,它是用於處理數據,錯誤等更結構化的方法?因爲正如你所說的回撥地獄並不好玩。 – Maff

+0

是的,我同意。在我看來,這只是一種優雅的方式來處理遭受這個「問題」的語言的數據。 – ilpaijin

+0

也是一個簡單的實現:http://www.opensourceconnections.com/2014/02/16/a-simple-promise-implementation-in-about-20-lines-of-javascript/ – ilpaijin

0

官方文件說,

的承諾API允許,這是非常難 做傳統的回調(CPS)的方式組成。有關此 的更多信息,請參閱Q文檔,特別是串行或 並行連接承諾部分。

http://docs.angularjs.org/api/ng/service/$q

我認爲最簡單的解釋是,這是一個更好的和更清潔的方式做一個串行或非常複雜的回調比傳統方式。

這是你可以閱讀更多有關使用承諾的利益鏈接:

promises specification