当我们可以在成功中调用函数时,为什么要使用promises

时间:2017-04-27 01:36:19

标签: javascript angularjs ajax asynchronous synchronous

我是Javascript&的新手AngularJS。我有一个场景如下:

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

$scope.data = data;

});

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

在上面的代码中,我对“calendarData'

”感到空白

但我可以解决以上问题:

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

所以,我怀疑的是:当我们能够解决上述问题时,为什么人们会接受承诺。对不起,如果它是一个愚蠢的查询。

1 个答案:

答案 0 :(得分:0)

承诺解决着名的回调地狱问题。回调地狱真的是指2个问题。第一个想法是,使用回调,您有时可能需要嵌套回调,因此很难读取代码。另一方面,Promise可以被链接,这使得代码更加清晰。

另一个问题是控制反转。这是一个大问题。在某些情况下,某些第三方调用回调的想法可能是一个可怕的想法。如果由于某种原因,该方存在一些错误,这个错误现在会泄漏到您的代码中。

一个例子是,无论你的原因是什么,你的回调被多次调用。这显然是一个致命的缺陷。 promise无论如何都只执行一次回调函数。换句话说,恢复控制的倒置是承诺的巨大胜利。