В настоящее время я использую службу $q из angular, чтобы вызвать вызовы API следующим образом:
var deferred = $q.defer();
$http.get(config.apiHost + details.url)
.success(function (data) {
deferred.resolve(data);
}).error(function (msg) {
deferred.reject(msg);
});
return deferred.promise;
но мы также можем использовать этот подход, не используя $q:
return $http.get(config.apiHost + details.url)
.success(function (data) {
return data;
}).error(function (msg) {
return msg;
});
и поскольку $http сам возвращает обещание, я также могу использовать более упрощенный подход:
$http.get(config.apiHost + 'posts')
.success(function (data) {
console.log(data)
}).error(function (msg) {
console.log(msg);
});
Так в чем же разница между этими особенностями между $q и $http, так как обе дают обещание, и оба они async? Имеет ли angular дополнительную функциональность с помощью $q? Я не могу найти хороший ответ.