javascript - Angular Service Promises -
so, i've got angular app makes restful calls server. there service wraps calls server. have method on service returns promise $http service. i'd add additional processing on method call, i'm not sure how because of asynchronous nature of promise.
currently in typescript:
class boardservice { private $http; constructor($rootscope: irootscope, $http: ng.ihttpservice) { this.$http = $http; } fetchboard(id: number) { return this.$http.get("/api/board/" + id); } }
i'd this:
fetchboard2(id: number) { this.$http.get("/api/board/" + id).success(function(data) { // manipulate data }); // return manipulated data; }
how this?
tricky sentence warning! because promises asynchronous, returning data based on data promise must return promise. want fetchboard2
return promise gets resolved once $http
promise has come , you've manipulated data. angular's $q
service.
fetchboard2(id: number) { var deferred = $q.defer(); $http.get("/api/board/" + id).success(function(data) { var newdata = dosomething(data); deferred.resolve(newdata); }); return deferred.promise; }
managing deferred objects gets fiddly, can use then
insert own manipulation pipeline.
fetchboard3(id: number) { return $http.get(...).then(function(data) { return dosomething(data); }); }
for more detail, here's a article.
Comments
Post a Comment