For循环返回使用angular 2

时间:2017-10-22 13:06:28

标签: javascript mongodb angular

我正在使用带有mongoDb的角度2。我正在使用被叫API的服务。

这是我的示例代码:

this.at就像这个fdfdsfdffsdf...

一样

这是授权密钥。

this.flatService.getFlats(this.at).subscribe(res: Response) => {
    for (var i in res) {
        console.log("i",i);
        var id=res[i].USER_ID;
        this.userService.getUserDetails(this.at,id).subscribe(users => {
            this.flatsdetails.push(user);
        });
    }  
});

首先,我打电话给getFlats()。它返回了JSON值。值具有USER_ID属性。它被传递给getUserDetails()中的另一个函数。

我安装了id值:就像这个123,234。getUserDetails()在我推送另一个数组之后还返回了用户JSON。

用户值如下所示:anitha,Ganesan。

我安慰了flatsdetails。它显示['anitha','Ganesan']。

i值仅返回最后一个元素。为什么呢?

USER_ID -> USERNAME
124     -> anitha
124     -> Ganesan

我需要这样的输出:

  USER_ID -> USERNAME
    123     -> anitha
    124     -> Ganesan

我也试过这个:

for(var i = 0; i < res.length; i++) {
}

但我无法解决这个问题。

1 个答案:

答案 0 :(得分:-2)

for循环不是asynchronous所以请将其设为forEach

this.flatService.getFlats(this.at).subscribe(res: Response) => {
        angular.forEach(res, function(user, key) {
            console.log("i",i);
            var id=user.USER_ID;
            this.userService.getUserDetails(this.at,id).subscribe(users => {
                this.flatsdetails.push(user);
            });
        });  
    });