I have following code:
var myObj = [
{
"idArray": [
"org.network#xyz1",
"org.network#xyz2"
]
},
{
"idArray": [
"org.network#xyz3"
]
}]
getTransferRequest = (id) => {
let respObj;
this._fetchTransferRequestData.getTransferRequest(id).subscribe(
data => {
respObj = data;
},
err => console.log(err),
() => {
return JSON.parse(respObj.message)
});
}
myObj.map(obj => (
obj["requestObjs"] = obj.idArray.map(transferId => this.getTransferRequest(transferId.split("#")[1]))
))
expected value of myObj after code runs :
[
{
"idArray": [
"org.network#xyz1",
"org.network#xyz2"
],
"requestObjs":[{"myid" : "xyz1"},{"myid" : "xyz2"}]
},
{
"idArray": [
"org.network#xyz3"
],
"requestObjs":[{"myid" : "xyz3"}]
}]
But I'm getting this for myObj's value :
[
{
"idArray": [
"org.network#xyz1",
"org.network#xyz2"
],
"requestObjs":[undefined,undefined]
},
{
"idArray": [
"org.network#xyz3"
],
"requestObjs":[undefined]
}]
Seems, map function executes before getTransferRequest returns the value. What am I doing wrong or what modification needs to be added to make it work. _fetchTransferRequestData.getTransferRequest calls an api. (To be clear, getTransferRequest contains an api call using rxJs's subscribe function and it is an Angular 6 code.)