Javascript Angular.js承诺

Javascript Angular.js承诺,javascript,angularjs,callback,angular-promise,Javascript,Angularjs,Callback,Angular Promise,我对承诺感到困惑。我在下面找到了代码。承诺的好处是什么。我读到过关于承诺的书,它被用来避免回调地狱。promise是否提供了更好的性能,还是仅用于以可读格式编写代码 var list = function (params) { if (!params) { params = {}; } var deferred = $q.defer(); if (params

我对承诺感到困惑。我在下面找到了代码。承诺的好处是什么。我读到过关于承诺的书,它被用来避免回调地狱。promise是否提供了更好的性能,还是仅用于以可读格式编写代码

     var list = function (params) {
            if (!params) {
                params = {};
            }
            var deferred = $q.defer();
            if (params.q) {
                params.q = JSON.stringify(params.q);
            }

            $http.get(someurl, {params: params}).success(function  (data, status, headers) {
                deferred.resolve(data);
            }).error(function (data, status, headers) {
                    deferred.reject(data);
                });
            return deferred.promise;
        };

Promise
s用作异步代码的句柄。您可以稍后使用它(作为变量名)来检查是否成功

医生说:

一种服务,可帮助您异步运行函数,并在函数完成处理时使用其返回值(或异常)

另见:


承诺用于使代码更具可读性、更好地组织(避免使用意大利面代码)和更灵活

但是,您的示例使用了一种称为“”的糟糕技术。实现同样目标的更好方法是:

var list = function (params) {
    if (!params) {
        params = {};
    }
    if (params.q) {
        params.q = JSON.stringify(params.q);
    }

    return $http.get(someurl, {params: params}).then(function (result) {
        return result.data;
    });
};

因为标题太模糊了,我从众多关于承诺的问题中挑了一个,让它成为一个副本。