当所有嵌套的api以角度2

时间:2017-09-09 11:15:31

标签: angular angular2-services

在我的函数中,我在for循环中调用嵌套的api,我想在我的for循环api调用完成时设置一个变量。我如何在角度2中实现这一点。

this.cMSService.listServiceByProductAndParentService(productId, parentServiceId).subscribe(res => {
            //console.log("Previous Services are",res);
            for (let j = 0; j < res.length; j++) {
                if (res[j].has_children) {
                    this.cMSService.listServiceByProductAndParentService(productId, res[j].id).subscribe(childService => {
                        res = res.concat(childService);
                        console.log(childService);
                        this.cMSService.listServiceByProduct(productId).subscribe(prodService => {
                            //console.log("Product Service response is", prodService);
                            for (let i = 0; i < res.length; i++) {
                                let servicePrices = prodService.find(tempProdService => tempProdService.id == res[i].id);
                                if(servicePrices){
                                res[i].prices = servicePrices.prices;
                                }
                            }
                            //console.log("After Service Response is", res);
                        })
                    })
                }
                else {
                    this.cMSService.listServiceByProduct(productId).subscribe(prodService => {
                        //console.log("Product Service response is", prodService);
                        for (let i = 0; i < res.length; i++) {
                            let servicePrices = prodService.find(tempProdService => tempProdService.id == res[i].id);
                            //console.log("Services Price are ", servicePrices, res[i].id);
                            if (servicePrices) {
                                res[i].prices = servicePrices.prices;
                            }
                        }
                        //console.log("After Service Response is", res);
                    })
                }
            }

            this.services = res;
            console.log("Response is",res);

我想在api调用结束时设置变量,第二件事就是当我更新 res 长度时。我的for循环仍在迭代到之前的值。

0 个答案:

没有答案