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

why to use promises when we can call function inside success

我是 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
    });
}); 

所以,我的疑问是:当我们能够像上面那样解决问题时,为什么人们会追求承诺。抱歉,这是一个愚蠢的查询。

Promise 解决了著名的回调地狱问题。回调地狱实际上指的是2个问题。第一个想法是,对于回调,您有时可能需要嵌套回调,因此很难阅读代码。另一方面,Promises 可以被链接起来,这使得代码更简洁。

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

例如,无论出于何种原因,您的回调被多次调用。这显然是一个致命的缺陷。 promises 无论如何只执行一次回调函数。换句话说,恢复控制反转是一个巨大的承诺胜利。