gpt4 book ai didi

javascript - 如何通过在 AngularJS 中链接 http 调用来构建对象数组?

转载 作者:行者123 更新时间:2023-11-30 16:46:52 25 4
gpt4 key购买 nike

我想构建一个对象数组,但对于每个对象,我需要多个链接的 http 调用。例如:

var objects = [];
$http.get(/getDataUrl)
.then(function(data){
for(i = 0; i < data.length; i++)
{
objects[i] = { value1 : data.value }
}
for(i = 0; i < objects.length; i++)
{
http.get(objects[i].value1)
.then(function(data){
objects[i].value2 = data.value;
}
}
})

有什么想法可以正确执行这个乱七八糟的事情吗?

最佳答案

您将始终获得“i”值作为最终索引,因为渲染器将在 ajax 请求提供 200 时打印它,这需要一些时间。在那短时间内,for 循环将被执行,因此您将始终获得 'i' 值的最后一个索引

要解决这个问题,您必须使用 closure inside loops

修改你的代码如下,

var objects = [];
$http.get(/getDataUrl)
.success(function(data){
for(i = 0; i < data.length; i++)
{
objects[i] = { value1 : data.value }
}
for(i = 0; i < objects.length; i++)
{
(function(index) {
var currentURL = objects[i].value1;

$http.get(currentURL)
.success(function(data) {

// both currentURL and i value can be accessed here
console.log(currentURL);
console.log(index); // i value = index

objects[index].value2 = data.value;
});
})(i);
}
})

现在您可以访问匿名函数中的索引。希望这有帮助

关于javascript - 如何通过在 AngularJS 中链接 http 调用来构建对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31094187/

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