我在将许多http请求放入循环时遇到了一些问题

时间:2019-10-16 13:33:41

标签: angular loops while-loop httprequest

我尝试从后端获取元素以生成导航。更具体地说,我有一些设备小组。这些与子导航项有关。这些子导航项目可能与子导航项目相关,而最后一个子导航项目与全局导航项目相关。因此,对于每个组,我尝试获取所有与子导航相关的和全局的。我最初是小组名单。我在其上循环以获取与该组直接相关的子导航项,然后存储与其他子导航相关的属性。然后,我使用“ while”指令在属性不为null时获取所有子导航项。如果为空,则不再有子导航项。但是我认为这是一个异步问题,我不知道如何解决。指令不停止时在内部请求。它对无限执行相同的请求

        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并得到正确的结果。有什么建议么 ?谢谢你们

0 个答案:

没有答案