gpt4 book ai didi

javascript - 等待 Angular JS 中所有 $http 请求完成

转载 作者:行者123 更新时间:2023-12-03 00:00:13 26 4
gpt4 key购买 nike

我有一个页面可以根据变量的长度发出不同数量的 $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;
}
});
}

这是我持怀疑态度的部分,因为某些东西需要成为 $q.all() 的参数,但 Angular 的文档中没有提到它,我不确定是什么这是注定的。

$q.all().then(function () {
$scope.rData = rData;
});

感谢您的帮助。

最佳答案

$http 调用始终返回可与 $q.all 函数一起使用的 Promise。

var one = $http.get(...);
var two = $http.get(...);

$q.all([one, two]).then(...);

您可以在documentation中找到有关此行为的更多详细信息。 :

all(promises)

promises - An array or hash of 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.
});

关于javascript - 等待 Angular JS 中所有 $http 请求完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23931846/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com