ntz*_*tzm 21 javascript angularjs
我有一个页面,可以$http根据变量的长度发出不同数量的请求,然后我只想在所有请求完成后才将数据发送到作用域.对于这个项目,我不想使用jQuery,所以请不要在你的答案中包含jQuery.目前,当每个请求完成时,数据被发送到范围,这不是我想要发生的.
这是我到目前为止的代码的一部分.
for (var a = 0; a < subs.length; a++) {
$http.get(url).success(function (data) {
for (var i = 0; i < data.children.length; i++) {
rData[data.children.name] = data.children.age;
}
});
}
Run Code Online (Sandbox Code Playgroud)
这是我对此持怀疑态度的一部分,因为某些东西需要作为参数$q.all(),但在Angular的文档中没有提及,我不确定它的含义是什么.
$q.all().then(function () {
$scope.rData = rData;
});
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
Mic*_*zyn 55
$httpcall总是返回一个可以与$q.all函数一起使用的promise .
var one = $http.get(...);
var two = $http.get(...);
$q.all([one, two]).then(...);
Run Code Online (Sandbox Code Playgroud)
您可以在文档中找到有关此行为的更多详细信息:
所有(许诺)
promises - 承诺的数组或散列.
在您的情况下,您需要创建一个数组并将所有调用推入循环中.这样,您可以使用与$q.all(…)上例中相同的方式在数组上使用:
var arr = [];
for (var a = 0; a < subs.length; ++a) {
arr.push($http.get(url));
}
$q.all(arr).then(function (ret) {
// ret[0] contains the response of the first call
// ret[1] contains the second response
// etc.
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20936 次 |
| 最近记录: |