Нов в Angular, може да използва обещания погрешно. Имам фабрика, която връща обещание:
.factory('myData', ['$http', '$q', function($http, $q) {
var deferred = $q.defer();
$http.get('/path/to/endpoint')
.success(function(data) {
deferred.resolve(data);
})
.error(function(err) {
deferred.reject(err.what())
});
return deferred.promise;
}])
Сега, ако инжектирам фабриката си някъде, мога да използвам обещанието:
.controller('myController', ['$scope', 'myData', function($scope, myData) {
myData.then(function(result) {
$scope.data = result;
});
}]);
Това е добре, но започвам да използвам myData
на няколко места и не искам да пиша нов .then
във всяка директива и контролер, в който използвам данните. След като обещанието бъде разрешено, не ме интересува вече, има ли някакъв начин да накараш myData
да върне обещание, ако не е разрешено, но да върне само резултата, след като приключи с разрешаването?
Казано по друг начин, може ли myData
просто да бъде .then
result
след разрешаването, или трябва да пиша ново .then
всеки път?