我想合并两个API调用。我先打电话通过在后端过滤accound_id来获取一些数据。 在第二次调用中,我使用test_id获取数据。
这是我的/ api / test-overview的JSON:
{
testSprint: [
{
account_id: 27,
test_id: 3,
name: "Junior"
},
{
account_id: 27,
test_id: 50,
name: "Wilson"
}
]
}
当test_id为3时,这是我对activityAvgService的JSON:
{
test_id: "3",
stats: {
avgE: 2.5,
avgD: 43.3,
avgA: 5.7,
avgH: 6.3,
highH: 0
}
}
当test_id为50时,这是JSON:
{
test_id: "50",
stats: {
avgE: 1,
avgD: 33,
avgA: 3,
avgH: 1,
highH: 0
}
}
这是我控制器中的$ http请求。
$http.get("/api/test-overview").then(testResponse => {
$scope.test = testResponse.data.testSprint;
for (var i = 0; i < $scope.test.length; i++) {
activityAvgService.showStatsAVG($scope.test[i].test_id).then(response => {
var stats = response.data.stats
console.log("stats", stats);
});
}
console.log("$scope.test", $scope.
我想在第一个JSON / api / test-overview中连接三个JSON。
我想有这样的事情:
{
testSprint: [
{
account_id: 27,
test_id: 3,
name: "Junior",
stats: {
avgE: 2.5,
avgD: 43.3,
avgA: 5.7,
avgH: 6.3,
highH: 0
}
},
{
account_id: 27,
test_id: 50,
name: "Wilson",
test_id: "50",
stats: {
avgE: 1,
avgD: 33,
avgA: 3,
avgH: 1,
highH: 0
}
}
]
}
我尝试使用map和concat,但它没有帮助。知道怎么办
感谢您的帮助!
答案 0 :(得分:0)
您需要锁定正在进行内部ajax调用的索引值 i
。
试试这个
$http.get("/api/test-overview").then(testResponse => {
$scope.test = testResponse.data.testSprint;
for (var i = 0; i < $scope.test.length; i++) {
(function(test, i) {
activityAvgService.showStatsAVG(test[i].test_id).then(response => {
var stats = test[i].stats; //this value will reflect in outer test in below console.log
console.log(test, stats);
});
})($scope.test, i)
}
}
&#13;