我对承诺感到困惑。我找到了下面的代码。这里承诺的好处是什么?我已经读过有关承诺避免回调地狱的承诺。 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;
};
答案 0 :(得分:0)
答案 1 :(得分:0)
Promise用于使代码更具可读性,更有条理(避免意大利面条代码),并且更加灵活。
然而,你在那个例子中使用了一种称为“deferred antipattern”的错误技术。完成同样事情的更好方法是:
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;
});
};