所以我正在一个项目,我有一个数据集,我必须检索数据集的各种统计数据取决于用户输入从服务器检索数据。解开承诺从HTTP服务返回
我试图设置一个AngularJS服务,它具有返回给定数据点上各种信息的各种方法。
这里是从服务的公共方法:
function test() {
return $http.get('blahblah.api.../datapoint1')
.success(function(data) {
console.log(data.name);
return data.name;
});
}
下面是相关部分从控制器:内
self.data = service.test();
console.log(self.data);
有趣的是,所述的console.log(data.name) http调用的成功正是我想要的。给定数据点的名称。 但是,其范围外的console.log(self.data)为我提供了原始承诺对象。我用来发送超出“成功”范围的信息的任何方法都为我提供了一个承诺对象。为什么是这样?有什么方法可以解决这个问题吗?处理控制器中的错误处理似乎非常低效。
我明白了。谢谢!任何具体原因,为什么它不能同步?或者解释为什么的链接?我假设有这样的理由需要这样做。 – Vangogh500
当然:http://stackoverflow.com/questions/13088153/how-to-http-synchronous-call-with-angularjs。另外请注意,javascript是按定义异步的,所以即使它是可能的(最好是使用Jquery或普通的旧XHR,但它是一个不推荐的行为),它根本不值得推荐 –