【发布时间】:2015-08-07 09:15:14
【问题描述】:
我有一个 Angular 应用程序,在控制器中我需要调用一个函数来发出两个 http get 请求,并且我需要这个函数在它们被解析时返回这些值。我不能让它们在 $routeProvider 中解析,因为这个函数需要在同一个控制器中获得一个值。
我展示了控制器的一部分:
function myController(info) {
var vm = this;
vm.name = info.data.name;
vm.extra_data = MyService.getExtras(name);
}
这里是服务的部分代码:
function myService($http, $q, API_EVENT1, API_EVENT2) {
return {
getExtras: getExtras
}
function getExtras(name) {
var request1 = API_EVENT1 + '/' + name;
var request2 = API_EVENT2 + '/' + name;
}
}
由于我尝试了几种方法,功能不完整,但我都没有成功。
我的问题是如何返回(在 getExtras 函数中)请求的两个结果。我曾尝试使用 $q.defer、$q.all 和 promises,但我无法实现。
以$q.all为例,我得到了结果,但是当我调用函数时,对象extra_data是未定义的,因为请求是异步执行的。
提前感谢您的回复。
【问题讨论】:
-
您是否尝试将您的
$http responses存储到一个全局变量中并使用$q.all()作为收集所有数据时的触发器? -
我明白了!我之前尝试过,但我没有正确返回延迟,但现在我解决了它返回之前在 $q.all 成功时解决的延迟。
标签: javascript angularjs