2017-04-27 59 views
-1

我是JavaScript的新手& AngularJS。我有如下的情景:爲什麼使用promise當我們可以調用成功的函數

$http.get('URL').success(function(data){ 

$scope.data = data; 

}); 

$.fullCalender({ 
calendarData: $scope.data 
}); 

在上面的代碼中,我得到空白「的CalendarData」

但我可以解決上述問題如下:

$http.get('URL').success(function(data){ 
    $.fullCalender({ 
     calendarData: data 
    }); 
}); 

所以,我懷疑是:當我們能夠像上面那樣解決問題時,爲什麼人們會兌現承諾。抱歉,如果它是一個愚蠢的查詢。

+0

承諾是一種工具,就像回調是一種工具 - 爲工作使用正確的工具 - 沒有一個比另一個更好的概念(一個使用錘子釘子和一個螺絲刀) - 承諾與使用回調「鏈接」多個異步操作時來自地獄的回調金字塔相比,具有輕鬆鏈接的優勢 –

+0

http://stackoverflow.com/questions/23667086/why-is-my-variable-unaltered-after- i-modify-it-in-a-function-asynchron – epascarello

+0

@JaromandaX非常感謝:)對不起,我沒有足夠的積分,無法積極參與。 – John

回答

0

承諾解決着名的回調地獄問題。回撥地獄真的指的是2個問題。首先是這樣一種想法,即使用回調函數,您有時可能需要嵌套回調函數,因此讀取代碼非常困難。另一方面,承諾可以鏈接在一起,使代碼更加簡潔。

另一個問題是所謂的控制反轉。這是個大問題。這種想法在某些情況下,某些第三方稱之爲回調可能是一個可怕的想法。如果出於某種原因,在派對上有一些錯誤,這個錯誤現在會泄漏到您的代碼中。

一個例子是,如果因爲你的原因你的回調被調用不止一次。這顯然是一個致命的缺陷。承諾只會執行一次回調函數,無論如何。換句話說,回覆控制權是一個巨大的勝利。

相關問題