i am calling two different service and getting difrent response. but i want to build one common table after arranging the response of both the service.
below is my service
JavaScript
x
22
22
1
getUsersForAdmin() {
2
this.budgetaryUnitService.getUserList('Budget Administrator').subscribe(response => {
3
this.adminData = response;
4
this.getUsersForViewer();
5
});
6
}
7
8
getUsersForViewer() {
9
this.budgetaryUnitService.getUserList('Budget Viewer').subscribe(response => {
10
viewerData = response;
11
this.buildData(viewerData);
12
this.buildRolesTable(response);
13
});
14
}
15
16
17
18
buildData(this.adminData,viewerData){
19
console.log(this.adminData,"Admindata");
20
console.log(viewerData,"viewerData");
21
}
22
i am getting below response in AdminData.
JavaScript
1
14
14
1
var adminData = {
2
"limit": 10,
3
"start_offset": 0,
4
"size": 2,
5
"response": [
6
{
7
"userid": "mabasore@us.ibm.com",
8
"firstname": "Murphy",
9
"lastname": "Basore",
10
"userstatus": "Active"
11
}
12
]
13
}
14
i am getting below response in viewerData.
JavaScript
1
18
18
1
var viewerData = {
2
"limit": 10,
3
"start_offset": 0,
4
"size": 2,
5
"response": [
6
{
7
"userid": "harinissb@us.ibm.com",
8
"firstname": "H",
9
"userstatus": "Active"
10
},
11
{
12
"userid": "tarnold@us.ibm.com",
13
"firstname": "Twana",
14
"userstatus": "Active"
15
}
16
]
17
};
18
Expected output
If i have AdminData then ‘name’: ‘Admin’, and need to prepare admin respnse. If i have ViewerData then ‘name’: ‘Viewer’, and need to prepare Viewer respnse.
JavaScript
1
28
28
1
export const rolesData = {
2
'limit': 10,
3
'start_offset': 0,
4
'result': [
5
{
6
'name': 'Admin',
7
'response': [
8
{
9
"userid": "mabasore@us.ibm.com",
10
"firstname": "Murphy",
11
"lastname": "Basore",
12
"userstatus": "Active"
13
}
14
]
15
},
16
{
17
'name': 'Viewer',
18
'response': [
19
{
20
"userid": "harinissb@us.ibm.com",
21
"firstname": "H",
22
"userstatus": "Active"
23
}
24
]
25
}
26
]
27
};
28
Advertisement
Answer
You can do it with combineLatest
.
JavaScript
1
30
30
1
import { combineLatest } from 'rxjs';
2
3
getRolesData() {
4
combineLatest([
5
this.budgetaryUnitService.getUserList('Budget Administrator'),
6
this.budgetaryUnitService.getUserList('Budget Viewer')
7
]).pipe(
8
map(([adminData, viewerData]) => {
9
const result = [];
10
result.push(
11
{
12
name: 'Admin',
13
response: adminData.response
14
}
15
);
16
result.push(
17
{
18
name: 'Viewer',
19
response: viewerData.response
20
}
21
);
22
return {
23
result
24
};
25
})
26
).subscribe( rolesData => {
27
this.rolesData = rolesData;
28
});
29
}
30