javascript - AngularJS $http.post inside function -
i using angularjs , inside service have this:
var fn = { test: function() { $http.post(...) .success(function(response) { console.log(response); return response; }) } } this.testpostcall = function (id) { console.log(fn.test()); }; in controller testpostcall undefined, in fact in console first output undefined , second 1 correct json response.
do know why undefined inside controller ?
this because doing asynchronous procedure not synchronous one. indicated in $http documentation:
the $http api based on deferred/promise apis exposed $q service
your code showing correct behaviour, because fn.test() function not return , therefore evaluates undefined. if want access data received test function, have return $http.post() itself.
it should this:
var fn = { test: function() { return $http.post(...); } }; fn.test().success(function(data) { console.log(data); });
Comments
Post a Comment