我正在使用带有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++) {
}
但我无法解决这个问题。
答案 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);
});
});
});