angular - 我在循环执行许多 http 请求时遇到了一些问题
问题描述
我尝试从后端获取元素以生成导航。更具体地说,我有一些设备组。论文之一与子导航项目有关。这些子导航项可能与子导航项相关,最后一个子导航项与全局导航项相关。因此,对于每个组,我都尝试获取所有相关的子导航和全局导航。我最初是组列表。我循环它以获取与该组直接相关的子导航项,然后存储与其他子导航相关的属性。然后我使用“while”指令在属性不为空时获取所有子导航项。如果它为空,则没有更多的子导航项。但我认为有一个异步问题,我不知道如何解决它。内部请求,而指令不会停止。它对无穷大做同样的请求
idParent = null;
constructor(private sousMenuService: SousMenuService, private groupeService: GroupeService, private userService: UserService, private supportService: SupportService) { }
ngOnInit() {
console.log(this.role_user);
this.loading = true;
//Récupération des informations de l'équipe de l'utilisateur -
this.supportService.getSupportById(this.id_support).subscribe(support =>{
this.support = support[0];
console.log(this.support.acces);
//!!!this.access is a tab of string with only the name of group(it's used to get group that have link with sub-nav)!!!
this.acces = this.support.acces.split(';');
//Récupération des groupes d'équipements accessibles par le support de l'utilisateur ( en bouclant sur chaque groupe d'équipement)
for (var i= 0; i < this.acces.length; i++){
console.log('itération',i);
//this.parent = true;
this.groupeService.getGroupeByName(this.acces[i]).subscribe(grp =>{
console.log(i); //this console.log show me 5 for each iteration (bc of the async)
//Récupération des menus liés directement aux groupes d'équipements
this.sousMenuService.getSousMenuById(grp[0].id_menu).subscribe(resSm => {
// this.sousMenu.push(resSm[0]);
console.log('le sous menu ',resSm[0].id_parent);
this.idParent = resSm[0].id_parent;
//
All console.log inside while don't show anything I can just see that there are several requests looping
while(this.idParent!= null){
// if (this.idParent == null){
// this.parent = false;
// console.log('pas de parent');
// }
//Récupération des menus parents
this.sousMenuService.getSousMenuById(this.idParent).subscribe(sousMenu2=>{
console.log('bonjour');
this.idParent = sousMenu2[0].id_parent;
console.log(sousMenu2[0].id_parent);
//if (this.idParent == null)
//console.log('voila');
});
}
});
});
}
console.log(this.grps);
console.log(this.sousMenu);
});
}
我想正确切换 idParent 并获得正确的结果。有什么建议么 ?多谢你们
解决方案
推荐阅读
- c# - 如何在自定义 DLL 中使用 OVRInput 实现统一?
- c++ - 无法在 Fedora 31 上安装 Folly
- python - 如何在python中构建一棵树?
- dynamics-business-central - 如何通过 Business Central 发送发布请求?
- python - 如何从满足条件A或B的pandas DataFrame中选择数据?
- hyperledger-fabric - 从头开始配置 Hyperledger Fabric 网络
- uwp - 使用 UWP 中的可视状态管理器更改网格内的样式
- javascript - 隐藏的 div 会阻止网站上的内容
- python - 基于数据框中列中的值的数据框行的交集
- html - 使用 jquery .append() 在表中创建新行并单击此新创建的行 jquery is not working