gpt4 book ai didi

javascript - 请求 Javascript/Angular 遇到异步问题

转载 作者:行者123 更新时间:2023-11-28 19:25:11 25 4
gpt4 key购买 nike

我有一些代码可以执行以下操作......第一个 get 调用基本上只是给出数据中的帖子列表。然后,对于每个帖子,我想加载第二个 get 调用给出的许多回复。问题是,它实际上经历了循环,但只加载了最后的回复。

 http.get("../api/sortpost/trending").success(function (data){
scope.posts = data;
for(var i = 0; i < scope.posts.length; i++){
post=scope.posts[i];
console.log(i); //prints 1 to i as expected
http.get("/api/postreply/"+post.id).success(function (data){
post.replies = data;
console.log(i); //prints i only i number of times
});
}
});

有人知道怎么解决吗?我猜测我循环得太快,并且获取请求没有足够的时间来处理。因此,我的 post.replies 和 i 发生了一些有趣的事情,并且在请求实际完成之前帖子就发生了变化。

最佳答案

elclanrs 评论正确解决了问题,您可以尝试创建一个 Promise 数组并立即执行它们,然后立即获取所有结果的列表:

 var promisesArray=[];
for(var i = 0; i < scope.posts.length; i++) {
post=scope.posts[i];
console.log(i); //prints 1 to i as expected
promisesArray.push(http.get("/api/postreply/"+post.id));
}

然后:

$q.all(promisesArray).then(function(aggregateData){
console.log(aggregateData);
})

关于javascript - 请求 Javascript/Angular 遇到异步问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28020150/

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