我有一个角度服务,在这里我发起一个http post调用。此外,还设置了一些常数值。最后,我使用return将这些数据发送到控制器,执行一些逻辑并将它们显示在视图中。Angular js在返回之前等待数据
服务码:
var apiurl = 'myurl';
var apidata = {data: 'mydata'};
var myDataPromise = httppostrequest($http, apiurl, apidata);
myDataPromise.then(function(result) {
service.datas = result;
console.log("data.name"+result);
});
return service;
的httppostrequest功能:
function httppostrequest($http, apiurl, apidata){
return $http({
method : "POST",
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
url: apiurl,
data: JSON.stringify(apidata),
timeout: 5000
});
}
该请求是成功的,并返回该数据。问题是,该行
返回服务;
在将来自请求的数据分配给服务变量之前执行。因此,来自发布请求的数据甚至不会传递给控制器。
我已经使用节点js,在那里有方法和工具,以避免需要时的异步性质。用angularjs我不明白。
如果我误解了,你是否建议我将服务注入其他地方(例如控制器)? –
是的,你知道了 – quirimmo
谢谢,那实际上工作。我想我也理解它的逻辑。 –